Einzelnen Beitrag anzeigen

sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#6

Re: udf in firebird deklarieren

  Alt 17. Jun 2006, 22:06
Zitat von marabu:
Hallo Martin.

Ohne Anspruch auf Schönheit - habe nur die nötigen Verbiegungen an deinem Code durchgeführt:

Delphi-Quellcode:
unit Strings;

interface

uses
  SysUtils;

  function Replace(s, old, new: PChar): PChar; cdecl; export;

implementation

function Replace(s, old, new: PChar): PChar;
begin
  Result := PChar(StringReplace(String(S), String(Old), String(New), [rfReplaceAll]));
end;

end.
Und natürlich muss die UDF noch der Datenbank bekannt gemacht werden:

SQL-Code:
DECLARE EXTERNAL FUNCTION ANSIUPPER
    CSTRING(100), CSTRING(100), CSTRING(100)
RETURNS CSTRING(100) FREE_IT
ENTRY_POINT 'Replace' MODULE_NAME 'MyFirebirdUDFs'
Anstelle in das BIN-Verzeichnis solltest du die library in das UDF-Verzeichnis von FireBird schieben.

Getippt und nicht getestet.

Grüße vom marabu
Hi Marabu,
ein paar Fragen:

1) Warum PChar und nicht WideString?
2) Was hat es mit cstring auf sich? Kann ich der Funktion dann varchar-Parameter übergeben?
3 Wieso ANSIUPPER? Die Funktion sollte ja eigentlich in Firebird auch Replace heißen...
4) Wofür steht FREE_IT?

Danke schonmal für die Antwort!
Martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat