Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизЧисла в памяти Найти похожие ветки
← →
Barbariska (2010-03-20 20:03) [0]объясните пожалуйста новичку, никак не могу понять,
есть buff: PChar, со второго байта там Dword число (320)
0000.40010000.0000
X объявил как Dword;
хочу в X занести Dword с памяти со второго байта..
пробую так:
X:= DWord((buff + 2)^);
в X получается заносится только первый байт $40
начал долго перебирать все что знаю, получилось занести таким выражением:
X:= DWord(pointer(buff + 2)^);
не могли бы пояснить как правильно присвоить переменной число из памяти, и если не сложно, в двух словах объясните что значит ^ и pointer..
спасибо!
← →
Вася (2010-03-20 22:46) [1]
> X:= DWord((buff + 2)^);
>
buff - PChar, следовательно buff^ - Char, один байт (для версий Delphi до 2007 включительно)
Можно объявить buff как указатель сразу на Dword
только надо при этом помнить, что (buff + 1) в этом случае будет увеличивать значение на 4
← →
Вася (2010-03-20 22:52) [2]Но вообще лучше объявлять структуры, и работать с ними
type
PFooRecord = ^TFooRecord;
TFooRecord = packed record
X1: Char;
X2: DWord;
...
end;
var buff: PFooRecord ;
← →
DVM © (2010-03-20 23:01) [3]
> присвоить переменной число из памяти
Move
← →
Barbariska (2010-03-20 23:35) [4]Спасибо за ответы! но дело в том, что есть готовый буфер, объявленный как PAnsiChar. Из него нужно вытаскивать разные числа.
DVM © , спасибо за указание данной процедурки, но как передать ей параметр
Move( pointer(buff+2)^ , x, 4) ?
тогда почти то же самое..
← →
Вася (2010-03-21 00:00) [5]
> есть готовый буфер, объявленный как PAnsiChar
Его можно переобъявить как угодно, любым типом указателя
← →
Barbariska (2010-03-21 00:45) [6]понял, спасибо!
если можно, подскажите ещё, что бы в конец разобораться, если
buff: PAnsiChar, как понимаю указатель на кусок памяти,
то что значит pointer(buff), buff^ и @buff
← →
DVM © (2010-03-21 00:55) [7]
> Barbariska (20.03.10 23:35) [4]
Ты не забыл, что сначала идет младший байт числа потом старший?
← →
DVM © (2010-03-21 00:58) [8]
> pointer(buff)
тоже указатель на тоже место, но нетипизированный, приведение называется
> buff^
данные на которые указывает указатель
> @buff
адрес переменной buff, в твоем случае адрес указателя
← →
Германн © (2010-03-21 01:27) [9]
> Barbariska (21.03.10 00:45) [6]
>
> понял, спасибо!
>
> если можно, подскажите ещё, что бы в конец разобораться,
> если
>
> buff: PAnsiChar, как понимаю указатель на кусок памяти,
>
> то что значит pointer(buff), buff^ и @buff
>
Без чтения книжек очень трудно понять.
← →
Barbariska (2010-03-21 02:08) [10]большое спасибо!,
после чтения книжек на практике вроде бы разобрался..
← →
Anatoly Podgoretsky © (2010-03-21 09:56) [11]
> то что значит pointer(buff), buff^ и @buff
Нетипизированый указатель, разименование, типизированый указатель
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.069 c