Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Преобразование указателя   Найти похожие ветки 

 
grisme ©   (2006-06-08 20:14) [0]

Доброго времени суток, господа...:0)
Есть вопрос, возможно ли явно преобразовать 4-байтный адрес в соответствующий тип DWORD(полностью идентичный,естесственно).
Т.е. это фактически необходимо для того, чтобы работать с адресом(точнее его значением), как с числом...
var mp:Pointer;
    mdw:DWORD;
begin
   mp:=@<нечто>;
   mdw:=DWORD(mp);
end;
Получу ли я в mdw соответствующее ЗНАЧЕНИЕ адреса mp?


 
Джо ©   (2006-06-08 20:16) [1]

А почему сомнения?


 
tesseract ©   (2006-06-08 20:17) [2]


> Получу ли я в mdw соответствующее ЗНАЧЕНИЕ адреса mp?


mdw=cardinal(@<нечто>) вроде срабатывало.


 
grisme ©   (2006-06-08 20:29) [3]

спасибо вам...)
Просто пишу "вслепую"...((
Значит получу..;) Спасибо еще раз..


 
Piter ©   (2006-06-08 20:45) [4]

Ну блин вопросы... Почему бы не проверить? Watch List рулит...


 
DillerXX ©   (2006-06-08 21:58) [5]

Уж не имеет ли ввиду автор mdw:=PDWORD(mp)^; ? А то слово "ЗНАЧЕНИЕ" бросилось в глаза


 
grisme ©   (2006-06-08 23:19) [6]

DillerXX ©   (08.06.06 21:58) [5]
Нет, не значение ПО ЭТОМУ АДРЕСУ...
указатель ведь просто адрес, в виде числа в 4 байта(в памяти так лежит)...так вот мне и нужно значение этого числа, чтобы им оперировать, как с числом...


 
MBo ©   (2006-06-09 06:34) [7]

>grisme
На всякий случай - для типизированных указателей работают процедуры Inc и Dec

var
  pw: PWord;

 Inc(Pw, 2); // сместит указатель на 2*SizeOf(Word)


 
evvcom ©   (2006-06-09 08:11) [8]

А еще можно и вовсе без присвоения mdw:=DWORD(mp); обойтись:
var
 mp: Pointer;
 mdw: DWORD absolute mp;
begin
  mp:=@<нечто>;
  <другое нечто> := <некое выражение с mdw>;
end;

или еще проще
<другое нечто> := <выражение с DWORD(@<нечто>)>;


 
grisme ©   (2006-06-09 16:36) [9]

Спасибо всем...)


 
han_malign ©   (2006-06-09 16:49) [10]


> На всякий случай - для типизированных указателей работают процедуры Inc и Dec

- более того, для PChar - полностью поддерживается адресная арифметика в стиле "С"
(pc+17)^:= "1";
(pc+17)[1]:="7";


 
DillerXX ©   (2006-06-09 17:14) [11]


> (pc+17)^:= "1";
> (pc+17)[1]:="7";

Вот дурак =( а я всю жизнь
PChar(DWORD(pc) + 17)[1]:="7";
делал :(



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1150812270
resuS
2006-06-20 18:04
2006.07.09
модуль для работы с динамическими типами данных


2-1151056340
parovoZZ
2006-06-23 13:52
2006.07.09
А как лучше загрузить из dll уже загруженную dll?


1-1148460715
IGray
2006-05-24 12:51
2006.07.09
Хочу знать действия пользователя до глюка


15-1149843053
Kolan
2006-06-09 12:50
2006.07.09
Что такое программная оболочка?


1-1148558415
Juice
2006-05-25 16:00
2006.07.09
Как удалить в RunTime экшен из TActionManager a ?