![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ссылка на * of object в виде строки [D7, Win95/98, WinXP]
kblc © (2005-08-18 09:32:00)Уважаемые мастера, у меня к вам вопрос:
Как передать аддрес в виде строки, а потом его вернуть на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;
но что-то не работает - вдрес не тот, вообщем просто ошибка :( почему?
Digitman (2005-08-18 13:31:00) [1]потому что значение поля TMethod.Data ты не установил
значение Self в теле вызванного метода объекта как раз и берется из поля TMethod.Data.
Alexander Panov (2005-08-18 13:30:00) [2]А что ж ты хотел?
Тебе Digitman уже давно про ВАП сказал.
kblc (2005-08-18 13:16:00) [3]Прошу прощения, вопрос я бы хотел теперь изменить:
Почему теперь, когда я вызываю ту самую функцию, адрес которой мне был передан строкой, то внутри этой процедурыSelf=nil? А все врутренние переменных класса не доступны?
kblc (2005-08-18 11:59:00) [4]Оч. большое спасибо
kblc (2005-08-18 11:59:00) [5]Оч. большое спасибо
Leonid Troyanovsky (2005-08-18 11:05:00) [6]
> kblc © (18.08.05 10:56) [7]
> Задача: Надо передать адресс на procedure of object в строке
> другому приложению,
Delphi help.
DevGuide: Developing COM-based applications
Creating simple COM servers
--
Regards, LVT.
Digitman (2005-08-18 11:01:00) [7]
> kblc © (18.08.05 10:56) [7]
> Надо передать адресс на procedure of object в строкедругому
> приложению
умней придумать сложно.
> связь с другим приложением осуществляеться только так
неужели ?
и иных способов/технологий не существует как бы ?
> из этого самого приложения вытащить адрес
ну вытащил ты его.
и поимел адрес в ЧУЖОМ ВАП.
> выполнить эту процедуру (с опред. параметрами).
в ЧЬЕМ ВАП ?
только не говори что ВАП Win32-процесса - это нечто тебе неизвестное и ни о чем тебе не говорящее
kblc (2005-08-18 10:56:00) [8]Задача: Надо передать адресс на procedure of object в строке другому приложению, (связь с другим приложением осуществляеться только так), а из этого самого приложения вытащить адрес, преобразовать его в procedure of object и выполнить эту процедуру (с опред. параметрами). Вот впринципе и всё.
Digitman (2005-08-18 10:55:00) [9]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;
Leonid Troyanovsky (2005-08-18 10:45:00) [10]Удалено модератором
kblc (2005-08-18 10:29:00) [11]Leonid Troyanovsky: не издевайся...
и всё-таки, как это сделать?
Leonid Troyanovsky (2005-08-18 09:56:00) [12]
> kblc © (18.08.05 09:41) [2]
> Зачем он мне? мне нужно передать это всего лишь в виде строки
> (только строки).
Пояснительные выражения объясняют темные мысли. [К.Прутков]
--
Regards, LVT.
kblc (2005-08-18 09:41:00) [13]Зачем он мне? мне нужно передать это всего лишь в виде строки (только строки). Может кто подскажет?
MBo (2005-08-18 09:35:00) [14]procedure of objectпредставляет собой record типа TMethod - есть в справке.