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

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

Ссылка на * 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 - есть в справке.


Наверх

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