|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с указателями
Два года с Delphi и до сих пор не использовал указатели в программах, не ощущая их необходимости. Только сейчас решил восполнить пробелы в образовании. Купил книгу Меженного и столкнулся с проблемой в компиляции примера из его книги
Цитата:
Получаю ошибку на строке px^:='A'; и следущей Цитата:
Что-то с типами данных. Не получается просто так присваивать нетипизированным переменным значения, хотя память выделяется верно. Пробовал в dev-pascal. Получил примерно то же самое. Можно ли присваивать нетипизированным переменным значения напрямую? |
#2
|
|||
|
|||
Вот в таком варианте работает:
Код:
var px: PChar; py: PInt; begin GetMem(px,SizeOf(char)); GetMem(py,SizeOf(integer)); px^:='A'; py^:=7; ShowMessage(px^); FreeMem(px,SizeOf(char)); FreeMem(py,SizeOf(integer)); end; Вот так тоже работает (удалил FreeMem, т.к. это вызывает ошибку): Код:
var px: pointer; AChar: Byte; begin GetMem(px,SizeOf(char)); AChar:= Ord('A'); px:=@AChar; ShowMessage(Char(px^)); end; Последний раз редактировалось AlexSku, 13.04.2010 в 01:29. |
#3
|
|||
|
|||
Да, присваивание адресов переменных работает.
px: PChar - это уже типизированные указатели почти что получаются и удобнее тогда использовать их так: px: ^char; И в таком случае это даже рациональнее, так как вместо GetMem(px,SizeOf(Char)) нужно воспользоваться конструкцией New(px); Пробовал в Pascal, тоже не работает этот пример. Странно, что он попал в учебник, на котором написано, что это самоучитель №1, хотя по содержанию он в целом действительно неплох. |