![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование типов [D5, NT4, Win2k]
Dummi © (2002-05-31 08:45:00)Простите за детский вопрос, но как имея указатель типа Longint не запись получить значения полей этой записи.
GenBr (2002-05-31 12:31:00) [1]Ну так значит попробуй так:
procedure YourPoc(P:^Msg);;
begin
P^.SomeFieldOfTMsg
end
Dummi (2002-05-31 11:36:00) [2]Уточняю, я ставлю хук на getmessage, в проседуру хука передается параметр типа Lparam, указатель на структуру MSG. Так мне надо считать значения полей.
Esu (2002-05-31 11:31:00) [3]Ну если уж очень хочется хранить адрес в LongInt ;)
(SizeOf(LongInt) == SizeOf(Pointer))
type
rRecord = record
a : integer;
s : string;
end;
var
p : Pointer;
r : rRecord;
ghm : LongInt;
begin
r.a := 10;
r.s := "aaa";
p := @r;
ghm := LongInt(p);
label1.Caption := IntToStr(rRecord(Pointer(ghm)^).a);
label2.Caption := rRecord(Pointer(ghm)^).s;
end;
Esu (2002-05-31 11:26:00) [4]Не знаю что это за указатель типа LongInt... Но вероятно хотелось что-то вроде этого:
procedure TForm1.Button1Click(Sender: TObject);
type
rRecord = record
a : integer;
s : string;
end;
var
p : Pointer;
r : rRecord;
begin
r.a := 10;
r.s := "aaa";
p := @r;
label1.Caption := IntToStr(rRecord(p^).a);
label2.Caption := rRecord(p^).s;
end;
GenBr (2002-05-31 10:02:00) [5]вопрос действительно детский и нелепый -)
MBo (2002-05-31 08:47:00) [6]уточни