powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция "pointer" возвращает какую-то ерунду...
9 сообщений из 34, страница 2 из 2
Функция "pointer" возвращает какую-то ерунду...
    #39722802
Гаджимурадов РустамX-Cite> Но автор создавал темы с 2006 года по 2018 год...
> Прошло 12 лет..... Указатели... "функция" Ponter. Я что-то не догоняю?

Скорее всего, человек просто не проф.разработчик,
а какой-то "прикладник" или теоретик - например,
ваяет "ПО" в каком-нибудь НИИ или КБ.

> Кстати, забавно наблюдать, что иногда на такие вопросы
> отправляют курить матчасть, а иногда разжевывают...
> В целом радужно, когда именно разжевывают...

Продолжайте помогать разжевывать. :)


Рустам, так и есть.
Занимаюсь прикладными задачами. В процессе моделирования не всегда можно обойтись специализированными программами. Одна умеет считать преломление луча в газе, но не умеет строить картинку, другая умеет картинки рисовать, но не умеет данные читать с COM-порта. А бывают совсем специфические задачи.... Привлекать на этом этапе профессиональных программистов бессмысленно. Это все равно что в процессе сочинения стихотворения пытаться выпускать книгу в типографии...

А вот когда уже все готово, проверено, отлажено, тогда я рисую алгоритмы и предлагаю варианты пользовательского интерфейса, а профессиональные программисты уже пишут грамотные шустрые программы.

И... Еще раз спасибо за помощь, за "разжевывание". Я никак не могу найти пару месяцев свободного времени, чтобы хотя бы начать изучать Тейксеро и Пачеко, если не путаю фамилии этих достойных людей... Другой работы хватает...
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722831
Федор_ФедорGunSmoker,
Вопрос. Почему, если вместо строки "pI:pInteger;" в разделе описания переменных (Var) указать "pI:^Integer;", то компилятор ругает строку кода "pI:=pInteger(p);"?

Кто-нибудь может подсказать, в чем проблема?
Подниму вопрос, боюсь - из-за последнего поста его не заметят.
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722848
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon http://www.makhaon.com/articles/?tag=oeacaoaee ERROR 500 - INTERNAL SERVER ERROR
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722857
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Федор_ФедорФедор_ФедорGunSmoker,
Вопрос. Почему, если вместо строки "pI:pInteger;" в разделе описания переменных (Var) указать "pI:^Integer;", то компилятор ругает строку кода "pI:=pInteger(p);"?

Кто-нибудь может подсказать, в чем проблема?
Подниму вопрос, боюсь - из-за последнего поста его не заметят.

Потому что pI будет указатель на указатель.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type
  PPPPPInteger = ^PPPPInteger;
  PPPPInteger = ^PPPInteger;
  PPPInteger = ^PPInteger;
  PPInteger = ^PInteger;
  PInteger = ^Integer;
var
  a: PPPPPInteger;



a - будет указатель на указатель на указатель на указатель на указатель на адрес в памяти размером Integer



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
  a: PInteger;
  b: ^PInteger;
begin
  New(a); // Выделили память под типизированный указатель "а"
  a^ := 5; // По адресу "а" записали 5
  New(b); // Выделили память под типизированный указатель "b"
  New(b^); // Выделили память под значение указателя "b", потому что оно тоже типизированный указатель
  b^^ := a^; //По адресу "b" получили указатель на указатель по которому записали значение из указателя на значение в "а"
  Dispose(b^);
  Dispose(b);
  Dispose(a);
end;
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722867
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
  i: Integer;
  p: Pointer; {нетипизированный указатель}
  pI: PInteger; {типизированный указатель на данные типа Integer}
  ppI: ^PInteger; {указатель на типизированный указатель на данные типа Integer}
begin
  i := 25000;
  p := Pointer(i); {указатель на адрес значения переменной i. т.е. p указывает на адрес 25000 по которому в данный момент лежит хз что и вообще данные по этому адресу нам могут не принадлежать и у нашего приложения нет прав туда}
  pI := PInteger(p); {аналогично выше, ничего не изменилось}
  ppI := @PInteger(p); {ppI будет содержать указатель на адрес переменной p, которая ... описано выше }
end;
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722871
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типизированные указатели, это по сути синтаксический сахар, чтобы компилятор мог делать некоторые вкусности.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
  i, j: Integer;
  p: Pointer; {нетипизированный указатель}
  pI: PInteger; {типизированный указатель на данные типа Integer}
begin
  i := 25000;
  p := @i; // p указывает на переменную i
  pI := @i; // pI указывает на переменную i
  j := pI^; // Так можно писать, потому что компилятор понимает размер данных по указателю pI потому что он типизирован
//  j := p^; // Так нельзя писать, потому что компилятор не понимает размера данных по указателю p потому что он не типизирован
end;
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722874
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдmakhaon http://www.makhaon.com/articles/?tag=oeacaoaee ERROR 500 - INTERNAL SERVER ERROR

Хостер в очердной раз сделали подарок поменяв версию php. Глянем. Можешь нажать 'обновить', пустит.
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722886
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

Товарищ спрашивает о конструкции
Код: pascal
1.
p: ^Integer;
...
Рейтинг: 0 / 0
Функция "pointer" возвращает какую-то ерунду...
    #39722955
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
Федор_Федор,
А из-за этого:

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Type_Compatibility_and_Identity_(Delphi)#Type_Identity

Language constructions that function as type names denote a different type each time they occur

типы, сконструированные по месту, несовместимы с такими же из другого объявления

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  a, b: ^Integer;
  c: ^Integer;
  d: Integer;
begin
  a := @d;
  b := a; // можно
  c := a;  // а нельзя
end;
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция "pointer" возвращает какую-то ерунду...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]