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.