Zeos + Firebird lazarus / 16-Databases ---------------------------------------------------------------------- markus_ja · 2016-06-09 08:37 How can I set an absolute path in Connection.LibraryLocation in order to point to the installed firebird directory? When I set an absolute path, e.g. C:\Program Files\Firebird\bin\fbclient.dll, the TZURL.SetURL function doesn't extract the LibLocation= properly. It interpretes the colon ( in the path C:\.. incorrectly. It thinks the colon ( specifies the host HostName. If this is a bug, where should I report it? ---------------------------------------------------------------------- Zoran · 2016-06-09 11:13 If you think this is Zeos bug, you can discuss it in their forum: http://zeoslib.sourceforge.net/ Or you can make bug report here: https://sourceforge.net/p/zeoslib/tickets/ ---------------------------------------------------------------------- JD · 2016-06-09 12:33 Quote from: markus_ja on June 09, 2016, 10:37:26 amHow can I set an absolute path in Connection.LibraryLocation in order to point to the installed firebird directory? When I set an absolute path, e.g. C:\Program Files\Firebird\bin\fbclient.dll, the TZURL.SetURL function doesn't extract the LibLocation= properly. It interpretes the colon ( in the path C:\.. incorrectly. It thinks the colon ( specifies the host HostName. If this is a bug, where should I report it? I post below the code from a working 3 tier application I wrote. I don't use TZURL because I have an application server between the database and the client. The application server uses a connection pool and several connections are created when the application server is started as follows: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TPoolHelper.OnCreateObject(Sender: TObject; var AObject: TObject);var  strFilePath, strDatabaseFullPath: string;begin  //  strFilePath       := ExtractFilePath(Application.ExeName);  strDatabaseFullPath := Copy(strFilePath, 0, Length(strFilePath) - 4) + 'data\MyFirebirdDatabase.fdb';  //  if not FileExistsUTF8(strDatabaseFullPath) then    MessageDlg(Format('The database %s does not exist.', [strDatabaseFullPath]), mtWarning, [mbOK], 0)  else    AObject := TServerData.Create(strDatabaseFullPath);end;  The Create method that uses Zeos is as follows. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i constructor TServerData.Create(TNSNAME: string; LOGIN_ID: string = 'sysdba';                      LOGIN_PW: string = 'masterkey';                      AHostName: string = '127.0.0.1';                        APort: integer = 0); overload;begin  //  inherited Create(nil);  //  F_TNSNAME := TNSNAME;  F_ID := LOGIN_ID;  F_PW := LOGIN_PW;  FHostName := AHostName;  //FPort := APort;               // disable for sqldb   // Zeos method  //  with SQLConnection do  begin    // This is the default IP if the config file does not specify an alternative path    HostName                := AHostName;    // A zero hostname or HTTP Port #80. Zero if hostname is localhost and #80    // otherwise    Port                    := APort;    Database                := TNSNAME;    Protocol                := 'firebird-2.5';    User                  := LOGIN_ID;    Password                := LOGIN_PW;    AutoCommit              := False;    TransactIsolationLevel  := tiReadCommitted;     // UTF-8 connection properties    with Properties do    begin      Add('character_set_client=utf8');      Add('character_set_connection=utf8');      Add('character_set_database=utf8');      Add('character_set_results=utf8');      Add('character_set_server=utf8');      Add('character_set_system=utf8');      Add('collation_connection=utf8_general_ci');      Add('collation_database=utf8_general_ci');      Add('collation_server=utf8_general_ci');      Add('Codepage=utf8');    Add('isc_tpb_concurrency');       // needed for multiuser environments      Add('isc_tpb_nowait');            // needed for multiuser environments    end;      // with Properties do     try    // Connect to the database      // -- each connection in the pool will get its own direct connection to the      // -- database      Connect;    except      MessageDlg(strConnectionFailure, mtWarning, [mbOK], 0);    end;  end;  Your application server can be something as simple as a Windows service or Linux daemon. This works for me. I hope it helps. Cheers, JD