Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Преобразование типов [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]

уточни


Наверх

Титульная страница Поиск, карта сайта Написать письмо