Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
10-1121745962
just
2005-07-19 08:06
2006.07.09
twebbrowser, ihtmldocument, таблица большого размера


2-1150979987
*delete*
2006-06-22 16:39
2006.07.09
как проверить создание папки


2-1150964036
Кирилл Таран
2006-06-22 12:13
2006.07.09
Есть ли в Дельфи 7.0 оператор, аналогичный Delay в Turbo Pascal?


2-1150969910
webpauk
2006-06-22 13:51
2006.07.09
Запрет открытия ссылок


3-1147233895
OrenYastreb
2006-05-10 08:04
2006.07.09
Ввод пароля в Paradox




   Наверх