![]() |
DBX4 - innerhalb der VendorLib String zurückgeben
Ich drehe mich hier gerade im Kreis und komme einfach nicht weiter.
Ich habe folgende Prozedur (DBXDynalink des DBX Frameworks)
Delphi-Quellcode:
Wie man hier sehr schön sehen kann, ist der Parameter "AnsiStringVar" als Referenzvariable angegeben. Innerhalb der VendorLib (DLL) sieht die Deklaration folgendermaßen aus:
procedure TDBXDynalinkRow.GetAnsiString(DbxValue: TDBXAnsiStringValue;
var AnsiStringVar: TDBXAnsiStringBuilder; var IsNull: LongBool); var DBXResult: TDBXErrorCode; begin DBXResult := FMethodTable.FDBXRow_GetString( FRowHandle, DbxValue.ValueType.Ordinal, AnsiStringVar, IsNull ); if DBXResult <> TDBXErrorCodes.None then FMethodTable.RaiseError(FDBXContext, DBXResult, FRowHandle); end;
Delphi-Quellcode:
Also nicht als "out" gekennzeichnet. Ok, also wird der Zeiger übergeben und ich soll jetzt den zu übergebenen String an die entsprechende Speicherstelle schreiben. Aber wie? da kommt nie etwas zurück. Wieso haben die Chaoten von Embarcadero das so deklariert?! Bei allen anderen Get-Methoden ist beim Value immer "out" angegeben, nur hier an dieser Stelle nicht!
function DBXRow_GetString(
Handle: TDBXRowHandle; Ordinal: TInt32; Value: TDBXAnsiStringBuilder; out IsNull: LongBool):TDBXErrorCode; stdcall; begin Result:=TDBXErrorCodes.None; end; Ich habe folgendes ausprobiert (ohne Erfolg):
Delphi-Quellcode:
Move(text, Value, length(text));
TDBXAnsiStringBuilder = PAnsiChar; Hoffe ihr habt da eine Idee für mich. |
AW: DBX4 - innerhalb der VendorLib String zurückgeben
Ok, nach langem herumprobieren habe ich es jetzt geschafft. Der isNull-Parameter musste noch auf "False" gesetzt werden :wall:
Danke fürs zuhören. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz