![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: FIBPlus
Rückgabewert aus Firebird UDF
Hallo zusammen,
ich habe entsprechend den Hinweisen, die ich ![]() 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 ![]() |
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 13:41 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-2025 by Thomas Breitkreuz