Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c