powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно присвоить указатель на метод?
25 сообщений из 64, страница 2 из 3
Как правильно присвоить указатель на метод?
    #39865919
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linux_64Хорошо. Объясню иначе...
В функцию передаются параметры:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Function SetMethodRTTI(FormName: TObject; KompName: TObject; EventName: string): Boolean;
Var
 TM: TMethod;
Begin
 TM.Code:= @EventName;
 TM.Data:= KompName;
 SetMethodProp(KompName, EventName, TM);
End;
// FormName - имя второй формы на которой находится KompName
// EventName - событие KompName, например TKeyPress
// Этим кодом я присваиваю указатель на метод FormName.KompName.EventName
// Компонент может быть любым, так же как и его событие


С какого буя это должно работать? Просто потому, что тебе так хочется?
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865921
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По сути TM.Code содержит адрес указателя , например "D124FS8E" ,если компоненту был присвоен обработчик или пустой адрес со значением nil "00000000". Так как я не могу напрямую указать этот адрес, я могу сделать это виде строки @Button44DblClick. Но как правильно записать эти две строки кода, при условии что сам обработчик находится в другой форме?
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865924
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё,

Это будет работать, если я правильно учту две переменные
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865926
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linux_64Но как правильно записать эти две строки кода, при условии что сам обработчик находится в
другой форме?

В одну строчку: этотбатон.OnClick := другаяформа.какойтометод;
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865927
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrНет такого понятия "универсальный указатель".

Лож! Чистая Лож! Вводите людей в заблуждение.

Я привёл универсальный указатель, который является анонимной функцией коллбэка.

21975672
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865928
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшика разморозили...
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865931
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxpc, и как мы жили 10 лет без дженериков ? И куда мне это всунуть в моей древней Д7 ?
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865932
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё,

вы застряли в древнем веке когда только цепочкой можно было описать возможные варианты толстой непроглядной простынёй, которая похожа на 5000000 одеял сложенных вместе

Вы даже не представляете что такое динамика. Так, нюхали rtti и не знали что в себе кроется когда юный мозг очень ленив

У того класса большой потенциал который позволяет ставить коллбэки на что угодно, как угодно. Включая коллбэк процедуры класса.

При этом в переменной возвращает всю информацию об установленном коллбэке на объект. Сам объект в переменной Base: TBaseEvent

сами параметры Params: TArray<TValue> которые из TValue можно конвертировать во что угодно. Хоть в JValue хоть в zval что в голову придёт.

А так же есть Base.PointArgs[1] чтоб редактировать по var ключу значения.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TForm1.FormCreate(Sender: TObject);
begin
  EventHookObject.OnBefore :=
      procedure(Base: TBaseEvent; Params: TArray<TValue>)
    begin
       PChar(Base.PointArgs[1]^)^ := 'D';
    end;

  EventHookObject.Add(Memo1, 'OnKeyPress');
end;
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865933
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TForm1.FormClick(Sender: TObject);
var A: TMethod;
begin
  A.Code := MethodAddress('FormMouseMove');
  A.Data := Form1;
  SetMethodProp(Form1,'OnMouseMove',A);
end;
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865935
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Linux_64,

Ой, всё.. Тут прошлый век к сожалению.. Не знал. Буду знать, что динозавры ещё не вымерли.
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865936
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
Ну наконец то !!! Спасибо. «Оно» работает!
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865939
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе динамическую цепочку в теории можно построить и без RTTI

Только придётся пожертвовать TValue и манипулировать на основе каких то данных указателями на прямую
Код: pascal
1.
2.
3.
4.
5.
6.
Procedure TBaseEvent.EventCall2;
begin
  PointArgs[0] := @A1;
  PointArgs[1] := @A2;
  Handler
end;



То есть мы создаём описания, которая должно сработать для объекта на который мы поставили евент.

И когда произойдёт вызов. Мы в зависимости от нужных описаний конвертируем значения уже в аналог TValue для delphi 7

То есть
Код: pascal
1.
2.
3.
4.
5.
6.
7.
SetEvent(Memo, 'onClick', 
    procedure(Base: TBaseEvent; Params: TArray<TValue>)
    begin
      showmessage('Я сработаю вторым!');
    end,
   [TypeInfo(TObject)]
)
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865941
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но я думаю функционал для объектных процедур Delphi 7 в состояние прочитать информацию о аргументах функции

Так что описания в ручную о типах можно и не делать, если это можно будет сделать динамическим путём однако
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865942
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдаётся мне что Foxpc пропихивает в жизнь свою дичь
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865943
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxpc, А если завтра выйдет Делфи XE Kazakhstan 2039 , вы тоже будете на неё переходить?
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865946
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, возможно эта "дичь" толковая, но работает как минимум на Д2010
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865949
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому она и Дичь, что бестолковая.
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865953
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Linux_64Foxpc, А если завтра выйдет Делфи XE Kazakhstan 2039 , вы тоже будете на неё переходить?

Конечно же да, ведь независимо от тех багов что там будет. Там уже не будет тех багов что было. И конечно же много разных плюшек для упрощения жизни

Тот компилятор уже не имеет реальной жизни для разработки приложений
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865954
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxpc, Динозавры Д7 до сих пор держат марку!. А кому нужны дженерики и заветный модуль RTTI.pas - те перебежчики по разным средам, лишь бы на все готовое. А вы поработайте с TypInfo.pas
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865965
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxpc,
// Огромный функционал, кроссплатформенный. Работает под линуксом, под андроидом и под виндой
// А под Д7 не работает?
Ну ещё осталось под IOS забацать или под Windows 95.
А по поводу "новых плюшек",- вещи, которые казалось бы должны упростить нам жизнь, делают нас более ленивыми...
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865966
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,
Ещё один выскочка...
Можно подумать, ты новую версию среды за деньги покупал.
Небось на Петровке за 100 гривен пиратку купил и того хуже, скачал через торрент триал-версию.
Готовьтесь !!!
Завтра выйдет новая среда - Delphi XE Murmansk 2019. Все переходим...
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865967
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Linux_64
Не расстраивайся, D7 это ещё не самое древнее
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865968
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос решён. Тема закрыта.
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865971
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, Д6 это тоже отличная среда. Отличная!
А у некоторых ещё стоит Д5, просто стыдно признаться из за некоторых обновлятелей-апгрейдов
...
Рейтинг: 0 / 0
Как правильно присвоить указатель на метод?
    #39865972
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
Ох, скоро я свою доделаю...
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно присвоить указатель на метод?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]