Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird UDF unter Lazarus (https://www.delphipraxis.net/143178-firebird-udf-unter-lazarus.html)

Saschko 11. Nov 2009 10:14

Datenbank: Firebird • Version: 1.5 und 2.1 • Zugriff über: verschieden

Firebird UDF unter Lazarus
 
Hallo,

ich versuche gerade einige Funktionen als UDF für Firebird2.1 64Bit in Lazarud umzusetzen.
Klappt soweit ganz gut. Nur mit den Strings habe ich so meine Probleme.
Benutzt man nun grundsätzlich PChar, muss mann Speicher alloziieren und mit
FREE_IT freigeben, und so weiter.

Alle Tutorials die ich zu dem Thema gefunden habe, sind steinalt.

Kann mir jemand von euch vielleicht weiterhelfen?

Danke im Voraus

Sascha

mkinzler 11. Nov 2009 10:18

Re: Firebird UDF unter Lazarus
 
Da hat sich nichts geändert. Die "steinalten" Tuts sollten eigentlich immer noch gültig sein.

Saschko 11. Nov 2009 12:32

Re: Firebird UDF unter Lazarus
 
Das bedeutet das hier

Delphi-Quellcode:
function UpperChar(const p:PChar):PChar; cdecl;
{
DECLARE EXTERNAL FUNCTION UpperChar
CString(255)
RETURNS CString(255) FREE_IT
ENTRY_POINT 'UpperChar' MODULE_NAME 'MyUDF'
}
var s:string;
begin
  s:=STRING(p);
  s:=AnsiUpperCase(s);
  Result := ib_util_malloc(Length(s)+1);
  StrPCopy(Result, s);
end;
und das hier

Delphi-Quellcode:
function AddStr(const aChar1, aChar2, aChar3:PChar):Pchar;
cdecl;
{
DECLARE EXTERNAL FUNCTION AddStr
CString(50), CString(50), CString(1)
RETURNS CString(101) FREE_IT
ENTRY_POINT 'AddStr' MODULE_NAME 'MyUDF'
}
var s1, s2, s3,s4:String;
begin
  s1:=STRING(aChar1);
  s2:=STRING(aChar2);
  s3:=STRING(aChar3);
  s4:=s1+s3+s2;
  Result := ib_util_malloc(Length(s4)+1);
  StrPCopy(Result, s4);
end;
wäre eine gute Vorlage?

Geht das nicht auch anders, als mit ib_util_malloc ?

[edit=mkinzler]Code-Tags durch Delphi-Tags ersetzt Mfg, mkinzler[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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