function QuerySQL(out outResult: Variant; DBHandle: THandle; sql: PAnsiChar): Integer; stdcall;
IN und OUT sind in C++ nur Hinweise auf die Datenrichtung und haben nix mit der Parameterbehandlungen VAR/CONST/OUT in Delphi gemeinsam.
PS: Um ein eventuelles Speicherleck zu vermeiden,
(das OUT in C ruft gewisse Befürchtungen hervor, aufdaß ein eingehender Wert ignoriert/verworfen und nicht ordnungsgemäß freigegeben wird)
setzte outResult vor Aufruf der Funktion auf NULL, falls in V schon etwas enthalten sein kann.
Delphi-Quellcode:
uses Variants;
V := NULL;
i := QuerySQL(V, DBHandle,
sql);
Wobei es nicht schaden kann, wenn du den Aufruf abkapselst ... z.B.:
Delphi-Quellcode:
function InternalQuerySQL(
out outResult: Variant; DBHandle: Integer;
sql: PAnsiChar): Integer;
stdcall;
external '
deineDll.dll'
name '
QuerySQL';
function QuerySQL(
var outResult: Variant; DBHandle: THandle;
sql: AnsiString): Integer;
begin
outResult := NULL;
Result := InternalQuerySQL(outResult, DBHandle, PAnsiChar(
sql));
end;