C16_ProcArgument
C16_ProcArgument(const vPHANDLE aInstHdl, const vBYTE aArgType, void* aArgVal, const vBOOL aVarArg, const vBYTE aMaxLen) : vERROR
Prozedurargument übergeben
Details
- aInstHdl: Instanz-Handle
- aArgType: Typ des Arguments
- aArgVal: Wert des Arguments
- aVarArg: Übergabe als Referenz (true), Übergabe als Wert (false)
- aMaxLen: Maximale Länge des zurückgegebenen Alphawertes
- Resultat: vERROR Fehlerwert
- Siehe: Befehle der Programmierschnittstelle , C16_ProcCall() , C16_ProcResult()
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.
Sollen einer Prozedur mehrere Argumente übergeben werden, muss die Funktion für jedes Argument aufgerufen werden.
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)
...