Zum Hauptinhalt springen

C16_ProcArgument

C16_ProcArgument(const vPHANDLE aInstHdl, const vBYTE aArgType, void* aArgVal, const vBOOL aVarArg, const vBYTE aMaxLen) : vERROR

Prozedurargument übergeben

Details

Mit dieser Funktion können vor dem Aufruf einer Prozedur mit C16_ProcCall() Argumente definiert werden. Im Parameter (aInstHdl) wird der von C16_InitInstance() bereitgestellte Instanz-Handle, der in der Funktion C16_OpenArea() zum Öffnen der Datenbank verwendet wurde, übergeben. (aArgType) beinhaltet den Typ des Übergabeparameters. Zur Festlegung des Types können folgende Konstanten verwendet werden:

  • aArgType: Parametertyp
  • _TypeAlpha: vCHAR (C++) / vPCHAR (Delphi)
  • _TypeByte: vBYTE
  • _TypeCaltime: vCALTIME
  • _TypeDate: vDATE
  • _TypeFloat: vFLOAT
  • _TypeHandle: vPHANDLE
  • _TypeInt: vINT
  • _TypeLogic: vBOOL
  • _TypePoint: vPOINT
  • _TypeRect: vRECT
  • _TypeTime: vTIME
  • _TypeWord: vWORD

In (aArgVal) wird der Wert des Parameters übergeben. Die Übergabe kann als Wert (aVarArg = false) oder als Referenz (aVarArg = true) erfolgen. (aMaxLength) wird nur benötigt, wenn in (aArgVal) eine Zeichenkette als VAR-Parameter (aVarArg = true) übergeben wird. Der Wert gibt die maximale Anzahl der Zeichen an, die zurückgegeben werden können. In allen anderen Fällen wird der Wert ignoriert.

info

Sollen einer Prozedur mehrere Argumente übergeben werden, muss die Funktion für jedes Argument aufgerufen werden.

info

Bei der Übergabe als Referenz (aVarArg = true) ist zu beachten, dass das entsprechende Argument der durch C16_ProcCall aufzurufenden CONZEPT 16-Funktion nicht mit var definiert sein darf.

Der Rückgabewert vom Typ vERROR beinhaltet entweder 0 (kein Fehler) oder einen negativen Fehlerwert (siehe Fehlerwerte ).

Beispiel:

Deklaration der CONZEPT 16-Funktion:

sub C16_Proc
(
aText : alpha;
aValue : int;
)
: logic;

DLL-Schnittstelle (C-Code):

vCHAR tParameter[11] = "Text";
vINT tParameter = 5;
vBYTE tType;
vBOOL* tResult;

// Argument vom Typ alpha mit Referenzübergabe.
err = C16_ProcArgument(instHdl,_TypeAlpha,tParameter,true,10);

// Argument vom Typ integer ohne Referenzübergabe.
err = C16_ProcArgument(instHdl,_TypeInt,&tParameter,false,0);

// Aufrufen der Funktion und Resultat auswerten.
err = C16_ProcCall(instHdl,"C16_Proc");
err = C16_ProcResult(instHdl,&tType,(void**)&tResult);

// Result = true?
if (*tResult > 0)
...