Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

Ссылка на * 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
1-1124634052
OldNaum
2005-08-21 18:20
2005.09.11
Менеджмент сервиса


4-1122033529
KSergey
2005-07-22 15:58
2005.09.11
Как узнать владельца процесса?


14-1124180776
Esu
2005-08-16 12:26
2005.09.11
Во блин кратер отгрохали :)


4-1122192428
SergProger
2005-07-24 12:07
2005.09.11
Мой компьютер


14-1123345904
Eraser
2005-08-06 20:31
2005.09.11
VMWare и Multicast





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский