Datenbank: Firebird • Version: 2.1 • Zugriff über: FIBPlus
Rückgabewert aus Firebird UDF
Hallo zusammen,
ich habe entsprechend den Hinweisen, die ich hier ergoogelt habe, eine UDF-Dll in Delphi für eine Firebird 2.1 Datenbank erstellt. Zweck der UDF ist es, zufällige alphanumerische Strings (ohne 0) mit einer festen Länge zu generieren. Leider bekomme ich es nicht hin, dass der Rückgabewert in Firebird die gewünschte Länge hat - als Ergebnis des Select Statements kommt immer nur ein einziges Zeichen an. Mir ist nach 2 Tagen rumprobieren nicht klar, woran das liegt - wahrscheinlich bin ich mittlerweile schon betriebsblind? (Wenn ich die Funktion aus einer anderen Anwendung heraus aufrufe - ohne Verwendung von ib_util_malloc - funktioniert sie einwandfrei) Hier der Delphi Code für einen zuälligen alphanumerischen String mit der Länge 2:
Delphi-Quellcode:
function AnGen2: PChar; stdcall;
// habe auch cdecl probiert - ergebnis ist identisch var i: Integer; ls: string; l: integer; begin i := Random(35) + 1; if (i > 9) then ls := Chr(i + 55) else ls := IntToStr(i); i := Random(35) + 1; if (i > 9) then ls := ls + Chr(i + 55) else ls := ls + IntToStr(i); l := Length(ls) + 1 ; Result := ib_util_malloc(l); StrPCopy(Result, ls); end; Deklaration in der DB: DECLARE EXTERNAL FUNCTION ANGEN_2 RETURNS CSTRING(2) FREE_IT ENTRY_POINT 'AnGen2' MODULE_NAME 'angen'; Ich wäre für jeden hilfreichen Hinweis sehr dankbar. |
Re: Rückgabewert aus Firebird UDF
Zitat:
[edit] Sry, das ist wohl ein kleines "L" :oops: [/edit] [edit2] Laut http://www.firebirdfaq.org/faq83/ muss es cdecl sein (auch wenn das Dein aktuelles Problem nicht behebt). [/edit2] |
Re: Rückgabewert aus Firebird UDF
Rückgabewert vieleicht als PAnsiChar deklarieren.
|
Re: Rückgabewert aus Firebird UDF
Danke Euch beiden für Euren Rat. Blup, das wars... als PAnsiChar funktioniert es. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz