Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменть значение указателя?


Страницы:   1 2 3

Дурдом ©   (2005-01-03 02:40:00) 

Доброй ночи!
Можно ли средствами Делфи не прибегая к инлайн-ассемблеру сделать следующее:
var
A1:array[0..$FF] of byte;
FileMapped:pointer; //указатель на кусок памяти
n:integer;
---
begin
for i:=0 to $FF do
 A1[i]:=значение байта (по адресу (указателя на кусок памяти+i))

Это означает, что FileMapped указывает на некий массив байт, и надо заполнить массив A1 байтами, на которые указывает FileMapped (пододвигая значение указателя на 1 в право, но если можно по-другому - я не против).


programania   (2005-01-03 02:58:00) [41]

move(ptr(integer(FileMapped)+i)^,A1[i],1);
а короче
move(FileMapped^,A1,sizeOf(A1));


GuAV   (2005-01-03 02:57:00) [42]

Для арифметических операций с указателями их можно приводить к целочисленному 32 разрядному типу.
A1[i]:=PByte(Integer(FileMapped)+i)^

можно привести указатель к указателю на массив байтов.

A1[i]:=PByteArray(FileMapped)[i]

А ещё можно (я бы сделал имеено так) - воспользоваться Move
Move(FileMapped^, A1[Low(A1)], SizeOf(A1));


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо