Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#16

AW: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess

  Alt 15. Jul 2014, 11:59
Genau deshalb starte ich meine Firebird-DB-Clients, die einerseits die Server-Variante, andererseits aber auch die Embedded-Variante bedienen sollen, mit Startparametern. Daraus ergibt sich dann, welche Client-DLL geladen wird:
Delphi-Quellcode:
Function TDatMod.VerbindenDatenbank : Boolean;
begin
  Result := False;

  If ConMain.Connected Then ConMain.Disconnect;

  Case GL.DB_Modus Of

  0 : Begin // Embedded
        ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientEName;
        ConMain.Server := '';
        ConMain.Port := '';
      End;

  1 : Begin // Server Lokal
        ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientName;
        ConMain.Server := 'LocalHost';
        ConMain.Port := '3050';
      End;

  2 : Begin // Server Remote
        ConMain.ClientLibrary := GL.Pfad_Main + GL.ClientName;
        ConMain.Server := 'MyDBServer';
        ConMain.Port := '3050';
      End;
  End;

  ConMain.Database := GL.DB_Pfad + GL.DB_Name;
  ConMain.AutoCommit := True;
  ConMain.LoginPrompt := False;
  ConMain.Options.Charset := 'UTF8';
  ConMain.Options.DefaultSortType := stCaseInsensitive;
  ConMain.Options.UseUnicode := True;
  ConMain.SQLDialect := 3;

  Try
    ConMain.Connect;
    Result := True;
  Except
    On e:exception DO GL.FehlerMeldung := 'Fehler beim Verbinden mit Datenbank: ' + e.Message;
  End;
end;
wobei
Delphi-Quellcode:
UNIT GlobalVars;

INTERFACE


...
    PUBLIC { Public-Deklarationen  }
      Const
        ClientName = 'fbclient.dll';
        ClientEName = 'fbclientE.dll';
...
      Class Var
...
        DB_Modus : Byte;
...
Aufgerufen wird das Ganze dann beim Programmstart:
Delphi-Quellcode:
Procedure TFormMain.FormActivate(Sender: TObject);
begin
  ...

  If Not DatMod.VerbindenDatenbank Then
  Begin
    ShowMessage(GL.FehlerMeldung);
    Close;
    Exit;
  End;

  ...
end;
  Mit Zitat antworten Zitat