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)
...