![]() |
Datenbank: AbsoluteDB • Version: 6.07 • Zugriff über: -
Exception "Duplicate database name" bei zwei Instanzen
Moin !
Habe diesen Code hier:
Delphi-Quellcode:
Im Grunde nutzlos, aber es kommt da zu einem komischen Problem.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ABSMain, DB, DBGrids; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TDM = class private { Private-Deklarationen } DB : TABSDatabase; Session : TABSSession; public constructor Create; { Public-Deklarationen } end; var Form1: TForm1; one, two : TDM; implementation constructor TDM.Create; begin inherited; Session := TABSSession.Create(Nil); // Session.SessionName := 'LVSession'; Session.AutoSessionName := True; Session.Active := True; DB := TABSDatabase.Create(Nil); DB.DatabaseName := 'LVDataBase'; DB.SessionName := Session.SessionName; end; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin one := tdm.Create; two := tdm.Create; end; end. Ich habe ja zwei Instanzen von meiner TDM Klasse. Und ich würde mal sagen das ich dann im Normalfall auch keine Konflikte zwischen "one" und "two" haben sollte. Dennoch bekomme ich diesen Fehler:
Code:
Kann sich jemand einen Reim drauf machen was da schief geht ?!
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EDatabaseError mit Meldung 'Duplicate database name 'LVDataBase''. Prozess Project2.exe (3584)
|
AW: Exception "Duplicate database name" bei zwei Instanzen
Verwende mal unterschiedliche Sessionnamen
|
AW: Exception "Duplicate database name" bei zwei Instanzen
Moin Markus,
ne das isses noch nicht. Habe das mal probiert:
Delphi-Quellcode:
Und im Debugger auch geschaut was an SessionName entsteht. Ist def. unterschiedlich (würde mich auch wundern wenn nicht), aber das problem ist immer noch da :?
constructor TDM.Create;
var gu : TGUID; begin inherited; CreateGUID(gu); Session := TABSSession.Create(nil); Session.SessionName := 'Session_'+IntToStr(gu.D2)+IntToStr(gu.D3); Session.Active := True; DB := TABSDatabase.Create(nil); DB.DatabaseName := 'LVDataBase'; DB.SessionName := Session.SessionName; DB.DatabaseFileName := 'Test' + IntToStr(gu.D2)+IntToStr(gu.D3) + '.abs'; end; |
AW: Exception "Duplicate database name" bei zwei Instanzen
Zitat:
Zitat:
Du darfst keine 2 Instanzen von TABSDatabase mit gleichen DatabaseName-Property haben! |
AW: Exception "Duplicate database name" bei zwei Instanzen
Moin !
Zitat:
Zitat:
|
AW: Exception "Duplicate database name" bei zwei Instanzen
Zitat:
Hintergrund wird das Verhalten der BDE sein welche die Verbindung TTable/TDatabase zur Datenbank über diese Namen als String herstellt. Ware bei ABS nicht nötig da über die Referenz verbundent wird, aber vermutlich hat man früher ein BDE-Kompatibleres Verhalten implementiert. |
AW: Exception "Duplicate database name" bei zwei Instanzen
Danke für die Erklärung !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr. |
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 by Thomas Breitkreuz