Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Методы и процедуры [D7, WinXP]


Страницы:   1 2 3

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]

зачем?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо