Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка существование метода 
:(
    Опции темы
Dark Wanderer
Дата 18.9.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 25.10.2004
Где: Кишинёв

Репутация: нет
Всего: нет



Пишу код:
Код

procedure TMainForm.Button1Click(Sender: TObject);
var
  ExporterClass: Tclass;
  exporter: Texporter;
  i: integer;
 begin
  plugin := loadpackage(extractfilepath(application.ExeName) +
    'testoperation.bpl');
  for i := 0 to Count - 1 do
  begin
    exporterclass:=item(i);
    exporter:=exporterclass.create as texporter;
    
if exporter.MethodAddress('SettoMainMenu')<>nil then //Эта проверка не срабатывает
    exporter.SettoMainMenu;
  
 end;
end;

Не получается проверить существование метода smile
--------------------
  
PM MAIL   Вверх
p0s0l
Дата 18.9.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



А метод SettoMainMenu у тебя Published ?




--------------------
С уважением, г-н Посол.
PM   Вверх
Dark Wanderer
Дата 18.9.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 25.10.2004
Где: Кишинёв

Репутация: нет
Всего: нет



Опа! Спасибо p0s0l! Он у меня был public. А если оставить public, как можно осуществить данную проверку?
--------------------
  
PM MAIL   Вверх
p0s0l
Дата 18.9.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата(Dark @ 18.9.2005, 15:03)
если оставить public, как можно осуществить данную проверку?
Никак.
Буди только самому реализовать такую проверку в классах...



--------------------
С уважением, г-н Посол.
PM   Вверх
Dark Wanderer
Дата 19.9.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 25.10.2004
Где: Кишинёв

Репутация: нет
Всего: нет



Спасибо. Возьму на заметку.
--------------------
  
PM MAIL   Вверх
Bose
Дата 25.10.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



У меня похожая проблема. Надо в родителе вызвать метод который будет реализован в некоторых наследниках(не во всех). Т.е. сначала надо проверить, существует ли этот метод в наследнике и, если существует, то вызвать его.

Класс-родитель:
Код

  TcsForm = class(TForm)
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  ...
  published
      procedure RefreshData; virtual; abstract;
  end;

procedure TcsForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
     if Key=VK_F5 then
     begin
          if TcsForm(Sender).MethodAddress(RefreshData)<>nil then Caption:='ok' else Caption:='Sux';
     end;
end;

сейчас получается, что проверка TcsForm(Sender).MethodAddress(RefreshData)<>nil всегда даёт True smile


PM MAIL WWW Skype   Вверх
<Spawn>
Дата 27.10.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Цитата(p0s0l @ 19.9.2005, 00:59)
Никак.
Буди только самому реализовать такую проверку в классах...

Решение прошу смотреть тут


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.