Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как увеличить значение указателя POINTER


Автор: BigMazy 13.11.2004, 23:12
Как увеличить значение указателя POINTER
проблема состоит в соедующем:
имеется выделенная область памяти. Необходимо скопировать
в эту область информацию, но не в начало, а со сдвигом

var
pDest,pSource: pointer;
begin
.....
// хочу скопировать со здвигом 10 байт
MoveMemory(pDest+10,pSource,100);
end;

Комплятор выдает ошибку!
Следует заметь, что если использовать не pointer, а pchar,
то ошибки нет.

Но мне нужно использовать POINTER.
Подскажите, как рашить проблему

Автор: Girder 13.11.2004, 23:27
Миллион способов... smile на пример: PChar(pDest):=PChar(pDest)+10

Автор: maxim1000 14.11.2004, 00:35
дело в том, что операция "p:=p+10" сдвигает указатель вперед на 10 элементов, если это ^integer, то сдвиг будет на 40 байт
а в случае с p:pointer компилятор просто не знает какой размер элементов, на которые указывает p, потому и говорит об ошибке
кстати, а почему нужно использовать обязательно pointer?

Автор: BigMazy 14.11.2004, 12:54
Спасибо, разобрался
Poiner я использовал, так как необходимо было получать неизвестно какие данные - просто байты



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)