| Autor | 
Beitrag | 
oldprofiprog 
        
 
Beiträge: 35 
Erhaltene Danke: 1 
 
 
 
 | 
Verfasst: Mi 14.11.12 14: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 15: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 15: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 06: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 08: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 09: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 10: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 10: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 11: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 11: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 13: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 14:00 
 
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Do 15.11.12 14: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 10: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 10: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.  
 
 | 
 |