|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.02.2013, 16:37 | #1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
передать ссылку на процедуру в качестве строки
Иногда возникает необходимость связать 2 отдельных компонента,
например в одном есть поле типа:TStrings, а другой и есть тот самый TStrings: X:TMyClass; L:TStrings; хочу сделать так, чтобы два компонента связывали свои интерфейсы с помощью одной строки. Для этого нужно представить L в виде строки. я придумал как это сделать: P: pointer; P:=L; i:=Integer(P); s:=IntToStr(i); а потом в обратном порядке - строка расшифровывается объектом, необходимый TStrings успешно назначается полю компонента и все работает. но у меня возникли сложности с передачей таким же способом процедур... допустим есть простая процедура (точнее метод класса): procedure TMyClass.Test; begin ... end; описан тип данных: TSimpleProcedure:=procedure of object; и поле соответствующего типа в объекте TMyClass2: FOnClick:TSimpleProcedure; сделать нужно вот что: C1:TMyClass; C2:TMyClass2; C2.FOnClick:=C1.Test; вот такое нехитрое присвоение, но как сделать это через строковую переменную? (как я это описывал для L:TStrings) как получить указатель (P: pointer) на процедуру? |
24.02.2013, 16:48 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Читать http://www.gunsmoker.ru/2008/12/static-delphi.html
Чисто от себя - глупо через строку, хоть бы уж через integer, ведь указатель - обычное число по сути. А вообще - "Вы что-то делаете не так" © какой-то гуру Распишите задачу, а не то, как Вы придумали её решать - и Вам подскажут более нормальное решение. |
24.02.2013, 16:58 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
CTL в помощь.
Не. API не катит. Ну не люблю я его...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
24.02.2013, 17:27 | #4 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Все мы нормально делаем.
Ибо некоторому объекту нужно присвоить (к примеру): 20 процедур, 48 различных параметров, 35 других объектов. и я не хочу каждый раз, когда это надо сделать, писать 20+48+35 строчек кода, я хочу писать MyObject.SetInterface(Params); Params в данном случае - строка вида "имя - значение": pcoc1 54664465 // ссылка на процедуру pcoc2 54664465 // ссылка на процедуру obj1 37642357 // ссылка на объект obj2 34521357 // ссылка на объект obj3 34358957 // ссылка на объект name Krevedko // непосредственно параметр width 450 // непосредственно параметр height 120 // непосредственно параметр смысл переводить в строку - чтобы передать потом всю пачку параметров в одной строке, а не по одному. а смысл переводить в integer? я с таким же успехом и напрямую передам =) |
24.02.2013, 17:33 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
откройте для себя структуры, ибо для вашей строки у вас все равно куча кода.
а через строку, это ппц, не внутри однородных компонентов. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
24.02.2013, 18:14 | #6 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Пепел Феникса, структуры - понятие растяжимое.
не могли бы вы конкретизировать? и, Пепел Феникса, С1.SetParams(C2.GetParams); - вполне приемлемая "куча" кода... еще разок уточню что мне нужно: pointer:=@Form1.Button1Click; Последний раз редактировалось xrob; 24.02.2013 в 21:37. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно передать указатель на метод в качестве функции возврата? | Lyubimov | Помощь студентам | 1 | 25.11.2011 08:09 |
Передача многомерных динамических массивов в процедуру в качестве параметр-переменной | Leiph | Общие вопросы Delphi | 2 | 04.10.2011 03:07 |
Как массив передать в качестве аргумента функции | Mixim | C# (си шарп) | 7 | 10.03.2011 09:53 |
Передача поля объекта в процедуру в качестве параметра | Голованов Д. | Microsoft Office Excel | 10 | 02.11.2009 16:22 |