Autor |
Beitrag |
oldprofiprog
      
Beiträge: 35
Erhaltene Danke: 1
|
Verfasst: Mi 14.11.12 15:57
Hallo,
ich verwende in einem Programm den Firebird-Server und spreche diesen von Delphi aus über IBDAC an.
Jetzt möchte ich mein Programm als Demo-Version mit einer lokalen Datenbank bereitstellen.
Ich habe alle Dateien und Verzeichnisse aus der embed64.zip in mein Arbeitsverzeichnis kopiert. Dazu die Exe.
Im Arbeitsverzeichnis als Unterverzeichnis \db befindet sich die Datenbank.
Der Zugriff erfolgt über
Delphi-Quelltext 1: 2: 3:
| DB.Database := c:\Test\db\db.fdb; DB.Server := ''; DB.ClientLibrary := 'fbclient.dll'; |
Die Clientlibrary ist die im gleichen Verzeichnis umbenannte fbembed.dll.
Ich habe aber den Eindruck, dass die Clientlibrary des installierten FB Servers verwendet wird.
Schreibe ich
Delphi-Quelltext 1:
| DB.ClientLibrary := 'fbembed.dll'; |
oder
Delphi-Quelltext 1:
| DB.ClientLibrary := 'c:\test\fbclient.dll'; |
wird diese nicht gefunden.
Benenne ich die fbclient.dll im Arbeitsverzeichnis um, dann funktioniert das trotzdem. Es wird also die installierte Serverversion verwendet.
Mein Ziel ist es das Programm unabhängig von einer installierten FB Version zu betreiben.
Hat wer einen --Tip, was ich falsch mache?
Gruß
Hans
Moderiert von Martok: Delphi-Tags hinzugefügt
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mi 14.11.12 16:29
Es handelt sich um ein 64Bit-Programm? Und hast Du Dich auch an die Anleitung aus der README_embedded gehalten?
Zitat: | Just copy fbembed.dll, icudt30.dll, icuin30.dll and
icuuc30.dll into the directory with your application.
Then rename fbembed.dll to either fbclient.dll or
gds32.dll depending on your database connectivity software.
Then start your application and it will use the embedded
server as a client library and will be able to access
local datasases. You should also copy firebird.msg and
firebird.conf (if necessary) to the same directory.
If external libraries are required for your application,
then you should have them separately. Most probably, it
will be INTL support (fbintl.dll and fbintl.conf) or UDF
libraries. To be able to use them, you should place them
into the directory tree which emulates the Firebird server
one, i.e. has subdirectories like /intl or /udf:
c:\my_app\app.exe
c:\my_app\gds32.dll
c:\my_app\ib_util.dll
c:\my_app\icudt30.dll
c:\my_app\icuin30.dll
c:\my_app\icuuc30.dll
c:\my_app\firebird.conf
c:\my_app\firebird.msg
c:\my_app\intl\fbintl.dll
c:\my_app\intl\fbintl.conf
c:\my_app\udf\fbudf.dll
If you want to place the Firebird files (excluding the
renamed fbembed.dll) in another directory, you need to
modify your firebird.conf and set RootDirectory to the
Firebird directory tree. Example:
c:\my_app\app.exe
c:\my_app\gds32.dll
c:\my_app\ib_util.dll
c:\my_app\icudt30.dll
c:\my_app\icuin30.dll
c:\my_app\icuuc30.dll
c:\my_app\firebird.conf
d:\fb\firebird.msg
d:\fb\intl\fbintl.dll
c:\fb\intl\fbintl.conf
d:\fb\udf\fbudf.dll
firebird.conf:
RootDirectory = d:\fb |
|
|
FBrust
      
Beiträge: 30
Erhaltene Danke: 2
|
Verfasst: Mi 14.11.12 16:31
Hallo,
ich würde Dir empfehlen, Installationstests auf einem anderen Rechner (z. B. einer VM) auszuführen, wo der FB-Server nicht installiert ist, dann kannst Du sicher sein, dass andere DLLs Dir nicht ins Gehege kommen.
Ansonsten musst Du für Dein Programm die fbclient.dll und die restlichen dazugehörigen Dateien von Firebird mitliefern.
Ich installiere diese immer im Programmverzeichnis, um evtl. bereits vorhandene DLLs anderer FB-Versionen nicht zu überschreiben.
Gruß
Frank
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 07:00
Die Datenbank-Datei muß sich im selben Ordner befinden wie die Exe-Datei und die fbEmbedded.dll oder wie auch immer du sie nennen möchtest. Du mußt diese DLL nicht um benennen, bei mir heißt die gewöhnlich fbclientE.dll.
In deinem Programm-Ordner sollte sich folgendes befinden:
1. Die ausführbare Datei (z.B. MeinProgramm.exe)
2. Die dazugehörige Firebird-Datenbank (z.B. MEINEDATENBANK.FDB)
3. Ebenfalls direkt im Programmordner:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| C:\Programme\MeinProgramm\aliases.conf C:\Programme\MeinProgramm\fbclientE.dll C:\Programme\MeinProgramm\firebird.msg C:\Programme\MeinProgramm\ib_util.dll C:\Programme\MeinProgramm\icudt30.dll C:\Programme\MeinProgramm\icuin30.dll C:\Programme\MeinProgramm\icuuc30.dll C:\Programme\MeinProgramm\libeay32.dll C:\Programme\MeinProgramm\Microsoft.VC80.CRT.manifest C:\Programme\MeinProgramm\midas.dll C:\Programme\MeinProgramm\msvcm80.dll C:\Programme\MeinProgramm\msvcp80.dll C:\Programme\MeinProgramm\msvcr80.dll C:\Programme\MeinProgramm\ssleay32.dll |
4. Im Ordner INTL:
Quelltext 1: 2:
| C:\Programme\MeinProgramm\intl\fbintl.conf C:\Programme\MeinProgramm\intl\fbintl.dll |
5. Im Ordner UDF:
Quelltext 1: 2: 3: 4: 5: 6:
| C:\Programme\MeinProgramm\udf\fbudf.dll C:\Programme\MeinProgramm\udf\fbudf.sql C:\Programme\MeinProgramm\udf\fbudf.txt C:\Programme\MeinProgramm\udf\ib_udf.dll C:\Programme\MeinProgramm\udf\ib_udf.sql C:\Programme\MeinProgramm\udf\ib_udf2.sql |
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 15.11.12 09:33
Das steht doch alles in der von mir zitierten README_embedded, wozu alles noch einmal wiederholen?
|
|
FBrust
      
Beiträge: 30
Erhaltene Danke: 2
|
Verfasst: Do 15.11.12 10:40
Hallo,
ich würde auch eher nach dem von WasWeißDennIch geposteten Text vorgehen, denn die libeay32.dll, die midas.dll und die ssleay32.dll in der Aufzählung von Perlsau sind für Firebird embedded nicht notwendig.
Gruß
Frank
|
|
oldprofiprog 
      
Beiträge: 35
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 11:33
Danke an Perlsau, das hat mir weitergeholfen.
Der Fehler war, das ich die Datenbank in einem eigenen Unterverzeichnis hatte.
Ich hatte anfangs auch die 64 bit Version kopiert, da ich meinte das auf einem 64 bit Betriebssystem, analog dem Server, die 64 bit Version vorhanden sein müste.
Hatte aber dann gemerkt, das sich die 32/64 bit Version auf das Programm bezieht.
Jetzt funktioniert alles wie gewünscht.
Gruß
Hans
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 11:43
WasWeißDennIch hat folgendes geschrieben : | Das steht doch alles in der von mir zitierten README_embedded, wozu alles noch einmal wiederholen? |
Weil manche offenbar erst bei deutschen Texten zielführend durchblicken
Moderiert von Narses: Beiträge zusammengefasst
oldprofiprog hat folgendes geschrieben : | Danke an Perlsau, das hat mir weitergeholfen. |
Dann darfst du auch gerne den Danke-Button unter dem Beitrag, der dir weitergeholfen hat, betätigen. Unabhängig davon: Gern geschehen.
Ich hatte vor Jahren auch erste Anlauf-Schwierigkeiten beim Einrichten einer Embedded-Firebird-Datenbank. Daher noch ein wichtiger Hinweis:
So lange sich dein Programm und deine Datenbank im Entwicklungsstadium befinden, ist es äußerst hilfreich, alles mit einer Serverversion der Datenbank zu machen. Erst wenn du fertig bist und das Programm nebst Datenbank einsetzen oder weitergeben möchtest, solltest du im Programm auf Embedded umstellen. Der größte Vorteil dieser Vorgehensweise liegt darin, daß du gleichzeitig mit deinem Programm und deinem Lieblings-Datenbankmanager auf die jeweilige Datenbank zugreifen kannst. Versuchst du das jedoch mit der Embedded-Version, mußt du jedesmal deinen Datenbankmanager von der Datenbank trennen, wenn dein Programm sich mit der Datenbank verbindet, weil Firebird-Embedded keine Multiuser-Zugriffe gestattet.
Für diesen Beitrag haben gedankt: oldprofiprog
|
|
oldprofiprog 
      
Beiträge: 35
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 12:04
So arbeite ich auch.
Ich hatte die embedded Version in einer VM ausprobiert.
Da ich in vielen Projekten Firebird verwende und IBExpert zur Datenpflege verwendet wird, muss der Server immer installiert sein.
Zitat: |
Weil manche offenbar erst bei deutschen Texten zielführend durchblicken.
|
Damit direkt hat das nichts zu tun.
Den ersten Beitrag habe ich eigentlich ignoriert.
Die REadME habe ich ja in dem Verzeichnis und kannte diese fast auswendig.
Weil es trotzdem ein Verständnisproblem gab, habe ich halt gefragt und den entscheidenden Tip bekommen.
Hans
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 12:08
oldprofiprog hat folgendes geschrieben : | Damit direkt hat das nichts zu tun. ... Die REadME habe ich ja in dem Verzeichnis und kannte diese fast auswendig. |
Naja, ich dachte, weil der Hinweis schon im ersten Satz des geposteten englischen Textes steht:
Just copy fbembed.dll, icudt30.dll, icuin30.dll and icuuc30.dll into the directory with your application.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 15.11.12 14:58
Schön, dass meine Beiträge ignoriert werden, denn darin stand sowohl der 64Bit-Hinweis wie auch eigentlich alles andere. Wozu poste ich dann eigentlich? 
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.11.12 15:00
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 15.11.12 15:06
[OT] Da nennt man sich einmal anders als sonst *grmpf* [/OT]
|
|
ssb-blume
      
Beiträge: 375
Erhaltene Danke: 7
XP, W7, W8
Deutschland
|
Verfasst: Di 20.11.12 11:12
ja und--
wenn Flamerobin eine Datenbank ansehen will und diese connected wird, dann kommt folgende Meldung:
Context: GDS::Call()
Cant' find or load FBClient.DLL or GDS32.DLL
obwohl die DLL sowohl in C:\Programme\flamerobin als auch in C:\Windows\\sys32 stehen!
-- Ratlos
Hansi
_________________ Brain: an apparatus with which we think we think.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 20.11.12 11:29
ssb-blume hat folgendes geschrieben : | obwohl die DLL sowohl in C:\Programme\flamerobin als auch in C:\Windows\\sys32 stehen! |
Also in meinem Windows gibt es keinen Ordner C:\Windows\\sys32 ... Vermutlich sollte das eher C:\WINDOWS\system32\ heißen, nicht wahr?
Davon einmal abgesehen: Ich empfehle dir, die kostenlose IBexpert-Personalversion von HK-Software zu verwenden, die du dir dort herunterladen kannst. Dieser Datenbank-Manager kann viel mehr als das popelige FlameRobin, ist einfach zu bedienen und verfügt über eine ausgezeichnete Online-Hilfe.
|
|