Помощь - Поиск - Пользователи - Календарь
Полная версия: Смещение от базы указателя
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
AlienEmperor
Есть указатель на структуру данных (простой указатель, не типизированный), мне нужно присвоить в цикле значения этих данных переменной... Вопрос: как это сделать ?

вот что есть (не работает):
Код

GetMem(P,Size);
Read(F,P^,Size,RealRead) ...
......
For I:=0 To RealRead DIV 4 Do
Begin
Data:=PDWORD(P)^[I] - ошибка компилятора - Array type required
Memo1.Lines.Add(IntToHex(Data,1));
End;
FreeMem(P,Size);
volvo
Попробуй:
Type
ArrType = Array[0 .. 0] Of DWord;
...
GetMem(P,Size);
...
For I:=0 To RealRead DIV 4 Do Begin
Data := ArrType(P^)[I];
Memo1.Lines.Add(IntToHex(Data,1));
End;
...
FreeMem(P,Size);
AlienEmperor
Спасибо! Стабильно раз в пару месяцев встречаюсь с подобным преобразованием и каждый раз забываю как это делается... Вот он - склероз... А PByte - он по сути дела указатель на Array[0..0] of Byte ?
hardcase
Можно без разыменовывания:
type TBigArray = array[0..MaxInt div 4-1] of integer;
PBigArray = ^TBigArray;

var Ptr: pointer;
P: PBigArray absolute Ptr;

For I:=0 To RealRead DIV 4 Do Begin
Data := P[I];
Memo1.Lines.Add(IntToHex(Data,1));
End;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.