PDA

Просмотр полной версии : Индексирование указателей в Delphi


Yegor
23.05.2010, 12:19
В с++ можно очень легко индексировать указатели обращаясь к ним как к массиву.

В Delphi я пользуюсь следующей громоздкой конструкцией:

например если по указателю находится массив байт и мне нужно получить доступ к произвольной его ячейке

pt: pointer;
bt: byte;

bt:= byte(Pointer(dword(pt) + номер_элемента_массива)^);


Вопрос к знатокам - можно ли написать что то более изящное?

alexteam
23.05.2010, 13:01
PmyArray = ^Tmyarray;
TmyArray = array[0..$ffff] of byte; //я так понимаю именно такая размерность. можно и динамический ))


function GetElement(pt: PmyArray;element:cardinal):byte;
begin
result := P^[element];
end;

Yegor
23.05.2010, 13:15
В наличии есть именно безтиповый указатель Pointer, который ссылается на произвольную область памяти (число, строка, массив и т.д), как к нему применить описанную выше методику?

alexteam
23.05.2010, 13:22
result := TmyArray(P)[element]; ?

Добавлено через 30 секунд
предположение )