Главная страница
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.026 c
9-1116476897
Slavikk
2005-05-19 08:28
2005.09.11
GLScene Как сделать квестовое перемещение


3-1122468976
vok
2005-07-27 16:56
2005.09.11
Двусторонняя печать


9-1115866308
Slavikk
2005-05-12 06:51
2005.09.11
Документация по Lua на русском


2-1123500160
Storm
2005-08-08 15:22
2005.09.11
SQL Server


5-1097961181
Gotcha
2004-10-17 01:13
2005.09.11
Новый компонент + графика