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

Вниз

Ссылка на * of object в виде строки   Найти похожие ветки 

 
kblc ©   (2005-08-18 09:32) [0]

Уважаемые мастера, у меня к вам вопрос:
 Как передать аддрес в виде строки, а потом его вернуть на procedure of object
 Делаю так:

type
TProc = procedure of object;
...
var
proc: TProc;
proc1: TProc;
s: string;
...
begin
proc = Form1.Myprocedure;
s:=IntToStr(Integer(proc)); //адресс в виде строки


Integer(@proc1):=StrToInt(s); //возвращаю
end;

но что-то не работает - вдрес не тот, вообщем просто ошибка :( почему?


 
MBo ©   (2005-08-18 09:35) [1]

procedure of object представляет собой record типа TMethod - есть в справке.


 
kblc ©   (2005-08-18 09:41) [2]

Зачем он мне? мне нужно передать это всего лишь в виде строки (только строки). Может кто подскажет?


 
Leonid Troyanovsky ©   (2005-08-18 09:56) [3]


> kblc ©   (18.08.05 09:41) [2]
> Зачем он мне? мне нужно передать это всего лишь в виде строки
> (только строки).


 Пояснительные выражения объясняют темные мысли. [К.Прутков]

--
Regards, LVT.


 
kblc ©   (2005-08-18 10:29) [4]

Leonid Troyanovsky: не издевайся...

и всё-таки, как это сделать?


 
Leonid Troyanovsky ©   (2005-08-18 10:45) [5]

Удалено модератором


 
Digitman ©   (2005-08-18 10:55) [6]

procedure TForm1.Button1Click(Sender: TObject);
type
TProc = procedure of object;
var
proc: TProc;
proc1: TProc;
s: string;
method: TMethod;
begin
proc := Form1.Myprocedure;
method := TMethod(proc);

//туда
s:=IntToStr(Integer(method.Code));
ShowMessage(s);
//обратно
TMethod(proc1).Code := Pointer(StrToInt(s));
proc1;
end;

procedure TForm1.MyProcedure;
begin
ShowMessage("Маемся дурью");
end;


 
kblc ©   (2005-08-18 10:56) [7]

Задача: Надо передать адресс на procedure of object в строке другому приложению, (связь с другим приложением осуществляеться только так), а из этого самого приложения вытащить адрес, преобразовать его в procedure of object и выполнить эту процедуру (с опред. параметрами). Вот впринципе и всё.


 
Digitman ©   (2005-08-18 11:01) [8]


> kblc ©   (18.08.05 10:56) [7]



> Надо передать адресс на procedure of object в строке другому
> приложению


умней придумать сложно.


> связь с другим приложением осуществляеться только так


неужели ?
и иных способов/технологий не существует как бы ?


> из этого самого приложения вытащить адрес


ну вытащил ты его.
и поимел адрес в ЧУЖОМ ВАП.


> выполнить эту процедуру (с опред. параметрами).


в ЧЬЕМ ВАП ?

только не говори что ВАП Win32-процесса - это нечто тебе неизвестное и ни о чем тебе не говорящее


 
Leonid Troyanovsky ©   (2005-08-18 11:05) [9]


> kblc ©   (18.08.05 10:56) [7]
> Задача: Надо передать адресс на procedure of object в строке
> другому приложению,


Delphi help.  
DevGuide: Developing COM-based applications
Creating simple COM servers

--
Regards, LVT.


 
kblc ©   (2005-08-18 11:59) [10]

Оч. большое спасибо


 
kblc ©   (2005-08-18 11:59) [11]

Оч. большое спасибо


 
kblc ©   (2005-08-18 13:16) [12]

Прошу прощения, вопрос я бы хотел теперь изменить:

 Почему теперь, когда я вызываю ту самую функцию, адрес которой мне был передан строкой, то внутри этой процедуры Self=nil ? А все врутренние переменных класса не доступны?


 
Alexander Panov ©   (2005-08-18 13:30) [13]

А что ж ты хотел?
Тебе Digitman уже давно про ВАП сказал.


 
Digitman ©   (2005-08-18 13:31) [14]

потому что значение поля TMethod.Data ты не установил

значение Self в теле вызванного метода объекта как раз и берется из поля TMethod.Data.



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

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

Наверх




Память: 0.5 MB
Время: 0.037 c
14-1123751547
Akisflat
2005-08-11 13:12
2005.09.11
Сдельная работа для Delphi-программиста, в офисе в любое время.


3-1122620657
surkis
2005-07-29 11:04
2005.09.11
AdoQuery.seek


4-1121948938
Bobby
2005-07-21 16:28
2005.09.11
Опять PE


1-1124346306
Mishenka
2005-08-18 10:25
2005.09.11
Как отловить событие открытия PopupMenu у компонента?


2-1123570632
ApollonX100
2005-08-09 10:57
2005.09.11
Округление и модуль?