Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi udf in firebird deklarieren (https://www.delphipraxis.net/71567-udf-firebird-deklarieren.html)

mkinzler 18. Jun 2006 09:44

Re: udf in firebird deklarieren
 
Hast du die UDF per SQL-Skript in die DB eingebunden?

sancho1980 18. Jun 2006 09:51

Re: udf in firebird deklarieren
 
ja, die ist deklariert...mit der deklaration gibt's keine probleme; sie wird auch in ixexpert aufgelistet...

mkinzler 18. Jun 2006 09:59

Re: udf in firebird deklarieren
 
Bei Import/Export von Dll-Funktionen wird Groß-/Kleinschreibung unterschieden.
Ist die Bezeichnung bei beiden gleich?

sancho1980 18. Jun 2006 10:48

Re: udf in firebird deklarieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mkinzler
Bei Import/Export von Dll-Funktionen wird Groß-/Kleinschreibung unterschieden.
Ist die Bezeichnung bei beiden gleich?

Ja, schau's dir bitte mal an!

Danke,

Martin

mkinzler 18. Jun 2006 10:57

Re: udf in firebird deklarieren
 
Deine Dll exportiert ja garnichts. Du mußt die Funktion auch exportieren.

sancho1980 18. Jun 2006 14:27

Re: udf in firebird deklarieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
tatsächlich
das muss mir durch die lappen gegangen sein, als ich die änderungen vom marabu übernommen hab.
aber es geht trotzdem nicht :wall:
ich konstatiere nochmal:
-die dll ist jetzt so, wie ich sie jetzt noch einmal hochgeladen hab
-meine firebird.conf hab ich auch mal hochgeladen
-MyFirebirdUDFs.dll hab ich nach C:\Programme\Firebird\Firebird_1_5\UDF kopiert
-danach hab ich den fb-server gestoppt und gestartet
-danach hab ich in ibexpert meine udf folgendermaßen deklariert:

SQL-Code:
DECLARE EXTERNAL FUNCTION REPLACE
    CSTRING(100), CSTRING(100), CSTRING(100)
RETURNS CSTRING(100) FREE_IT
ENTRY_POINT 'Replace' MODULE_NAME 'MyFirebirdUDFs'
Das schien erstmal zu klappen:

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Current memory = 955.924
Max memory = 1.035.488
Memory buffers = 2.048
Reads from disk to cache = 0
Writes from cache to disk = 3
Fetches from cache = 39

-dann versucht, folgendes auszuführen:
SQL-Code:
select replace('hallo', 'al', 'la') from rdb$database;
Fehler:

Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Access to UDF library "MyFirebirdUDFs.DLL" is denied by server administrator.

Hat irgendjemand es geschafft, meine UDF zum Laufen zu kriegen? Wo liegt mein verdammter Fehler? Überall im Netz steht, es sei so 'unwahrscheinlich einfach' UDF's zu schreiben - wenn das nochmal einer sagt, dann :spin2:

mkinzler 18. Jun 2006 14:35

Re: udf in firebird deklarieren
 
Besser so

Delphi-Quellcode:
library MyFirebirdUDFs;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }
 

uses
  SysUtils,
  Classes,
  Strings in 'Strings.pas';

{$R *.res}
exports Replace name 'Replace';
begin
end.
Was steht in der Konfig?
Dies
Code:
UdfAccess = Restrict UDF
?

sancho1980 18. Jun 2006 14:52

Re: udf in firebird deklarieren
 
oh
Zitat:

Zitat von mkinzler

Was steht in der Konfig?
Dies
Code:
UdfAccess = Restrict UDF
?

Ohmannomann, da stand

Code:
UdfAccess = Restrict
Woher sollt ich wissen, dass da noch UDF dahinter muss?

Dank dir,

martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
Seite 2 von 2     12   

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