Могу ли я объявить функцию, используя тип

Вы можете использовать Service for foreground или NotificationListenerService.

0
задан Mark Walker 19 January 2019 в 19:52
поделиться

2 ответа

Есть ли способ сделать это?

Ответ прост: нет, вы не можете этого сделать. Когда вы объявляете функцию, вы должны включить ее полный список аргументов, тип возвращаемого значения и т. Д.

0
ответ дан David Heffernan 19 January 2019 в 19:52
поделиться

ЭТО неверно:

type
  TMyFunc = function(inP : Integer): outP : Boolean;

функция не может иметь два типа возврата (как outP, так и Boolean)!

INSTEAD:

type
    outP = Longint; // or whatever you want outP to be.

    TMyFunc1 = function (inP : Integer): outP;
    TMyFunc2 = function (inP : Integer): Boolean;

теперь вы можете определить переменную функции, скажем, doit1, и заставить ее определение иметь тип TMyFunc1. аналогично: doit2 имеет тип TMyFunc2.

var
    doit1 : TMyFunc1;
    doit2 : TMyFunc2;

если у вас есть функции:

const
    DllName1 = 'MyFirstDLL.DLL';
    DllName2 = 'MySecondDLL.DLL';

function TestFunc1(inP : Integer): outP; external DllName1;

function TestFunc2(inP : Integer): Boolean; external DllName2;

, тогда вы можете назначить эти функции заполнителям doit1, doit2:

procedure AssignPlaceholders;
begin
    doit1 := TestFunc1;
    doit2 := TestFunc2;
end;

ПРИМЕЧАНИЕ. Вы должны объявить типы заполнителей (TMyFunc1, TMyFunc2) Точно так же, как и реальные функции, включая спецификаторы, такие как stdcall, cdecl и т. Д.

После вызова AssignPlaceholder вы можете вызывать doit1 и / или doit2 точно так же, как и любую другую функцию.

0
ответ дан AHiismak 19 January 2019 в 19:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: