Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

DBX4 - innerhalb der VendorLib String zurückgeben

  Alt 10. Jan 2011, 00:01
Ich drehe mich hier gerade im Kreis und komme einfach nicht weiter.

Ich habe folgende Prozedur (DBXDynalink des DBX Frameworks)
Delphi-Quellcode:
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;
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:
Delphi-Quellcode:
function DBXRow_GetString(
  Handle: TDBXRowHandle;
  Ordinal: TInt32; Value: TDBXAnsiStringBuilder;
  out IsNull: LongBool):TDBXErrorCode; stdcall;
begin

  Result:=TDBXErrorCodes.None;
end;
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!

Ich habe folgendes ausprobiert (ohne Erfolg):
  Move(text, Value, length(text));
TDBXAnsiStringBuilder = PAnsiChar;

Hoffe ihr habt da eine Idee für mich.
  Mit Zitat antworten Zitat