![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Методы и процедуры [D7, WinXP]
Doma © (2006-09-15 18:48:00)Всем привет!
Помогите разобраться.
Есть два типа:
TMyProc1 = procedure(a,b: integer);
TMyProc2 = procedure(a,b: integer) of object);
PMyProc1 = ^TMyProc1
PMyProc2 = ^TMyProc2;
И есть процедура, который выполняет процедуры типа TMyProc1
procedure ExecProc1(proc: PMyProc1; a,b: integer);
var p: TMyProc1;
begin
@p := proc;
p(a,b);
end;
Задача сделать так чтобы эта же процедура могла выполнчть и методы типа TMyProc2.
Palladin (2006-09-15 19:32:00) [41]
> [10] Doma
падать может по куче причин, так же как и может неупасть при вызове метода
Palladin (2006-09-15 19:30:00) [42]
> [7] Doma
это подзадача, которая происходит от задачи более верхнего уровня, вот этот более верхний уровень от тебя и ожидается... и давай без эксцессов...
Ketmar (2006-09-15 19:30:00) [43]класс. орешек за орешком.
мне вот всегда было интересно: почему народ вместо того, чтобы учить матчасть, включает бредогенератор?
Doma (2006-09-15 19:28:00) [44]Да я не кричу! Совершенно спокоен...
А если попробовать вызвать в конструкции:
try
// пробуем как метод, если не прокатывает - падает
except
// значит пробуем как процедуру
end;
вот тока не понятно как метод в поинтер превратить...
Ketmar (2006-09-15 19:26:00) [45]> [6] Doma (15.09.06 19:23)
давай давать советы и рекомендации у себя дома, а не здесь? уж до сих пор как-то жили без ценных указаний, и дальше проживём.
Джо (2006-09-15 19:26:00) [46]> [7] Doma (15.09.06 19:24)
> Задача написать процедуру, которая могла бы выполнять и
> методы и процедуры!! Куда конкретней!
Не нужно кричать.
По указателю не отличишь метод от процедуры. Есть частные решения, но общего нет.
Doma (2006-09-15 19:24:00) [47]Задача написать процедуру, которая могла бы выполнять и методы и процедуры!! Куда конкретней!
Doma (2006-09-15 19:23:00) [48]Давайте писать по существу... если можешь помочь - помоги...а демогонию разводить не надо... надо это или нет, нужно ли писать на делфи или не надо, я думаю решать каждому... а обсуждение подобных тем явно должно быть не в этом разделе форума.
Palladin (2006-09-15 19:21:00) [49]
> Есть необходимость...
нет, нету, зато есть поиск второго слова в третьем посте...
правда если ты поделишься с нами смыслом задачи, то может быть найдется более простое решение...
Ketmar (2006-09-15 19:09:00) [50]> [2] Doma (15.09.06 19:07)
бросай ты этот Delphi. отстоище редкое. чтобы на нём писать -- надо ещё и какой-то там язык учить. а учить -- сложно. ещё и английский надо знать, чтобы со справкой подружиться... сложно, однозначно. бросай лучше.
Ketmar (2006-09-15 19:08:00) [51]за геморроем соскучились.
Doma (2006-09-15 19:07:00) [52]Есть необходимость...
Я предполагаю, что надо сделать приметно так:
procedure ExecProc(proc: pointer; a,b: integer);
begin
if proc is PMyproc1 then begin
...
end else begin
...
end;
end;
Но у меня не как не получается...
Знаю, что можно сделать две процедуры с разными параметрами, но с одинаковым названием ( с overload ), но задача сделать это в одной процедуре.
Palladin (2006-09-15 18:49:00) [53]зачем?