Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Pascal 7.0 Есть указатель на некую функцию. Требуется запустить   Найти похожие ветки 

 
Zilog ©   (2003-10-30 10:45) [0]

Pascal 7.0
Есть указатель на некую функцию. Требуется запустить функцию по этому указателю. Как? Подскажите Pls.


 
Zacho ©   (2003-10-30 11:01) [1]

Насколько помню, так же, как и в Object Pascal"е. Примеры из хелпа:

var

F: function(X: Integer): Integer;
I: Integer;
function SomeFunction(X: Integer): Integer;
...
F := SomeFunction; // assign SomeFunction to F
I := F(4); // call function; assign result to I


И вот еще:

The @ operator can also be used to assign an untyped pointer value to a procedural variable. For example,

var StrComp: function(Str1, Str2: PChar): Integer;

...
@StrComp := GetProcAddress(KernelHandle, "lstrcmpi");


 
Zilog ©   (2003-10-30 12:22) [2]

Не, не получается.
Есть массив:
p : array [0..254] of pointer;

есть функция, выполняющая некие действия:
SomeProc(Data : TData);
begin
...
end;

Далее, в определённом месте программы происходит следующее:
p[i] := @SomeProc;

И вот, при определённом событии надо бы вызвать через указатель из массива ту самую процедуру SomeProc.

Подскжите, pls, как...


 
alex_***   (2003-10-30 12:27) [3]

Объявляешь тип процедурный, переменную этого типа, присвоение и вперед.


 
Zacho ©   (2003-10-30 12:28) [4]

var
SomeProcVar: procedure (Data : TData);
begin
...
@SomeProcVar:=p[i];
SomeProcVar(..);


 
Zilog ©   (2003-10-30 12:34) [5]

Пасиба, ребята :) Ещё полдень, а чердак уже в Уругвай снесло... %)


 
han_malign ©   (2003-10-30 12:42) [6]

type TSameProc = procedure(Data: TData);
var paSameProcs: array[0..cMaxProcsCount-1]of TSameProc;
.........
if((i>0)and(i<cMaxProcsCount)and
(Assigned(paSameProcs[i])))
then paSameProcs[i](pData);


З.Ы. И, если массив не поле класса, неплохо бы в самом начале fillchar(paSameProcs,sizeof(paSameProcs),0);



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
3-41006
AleksDan
2003-10-27 01:12
2003.11.13
Вопрос по SQL


1-41538
ZrenBy
2003-10-28 09:39
2003.11.13
Проблемы с StrToDate


14-42083
NickBat
2003-10-23 15:55
2003.11.13
Анекдот.


3-40797
Tornado
2003-10-22 15:08
2003.11.13
Проверка наличия таблицы


8-41739
LIA
2003-07-09 10:14
2003.11.13
Запись звука с микрофона сразу в MP3