nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Datenmodul mit Connected=True

Von: Matthias Hanft (mh@hanft.de) [Profil]
Datum: 12.09.2007 09:39
Message-ID: <46E797B9.6020507@hanft.de>
Newsgroup: de.comp.lang.delphi.datenbanken
Hallo,

für den Zugriff auf eine bestimmte Datenbank baue ich üblicher-
weise ein (zur Laufzeit dynamisch erzeugtes) Datenmodul, in dem
sich eine IBDatabase befindet, deren Eigenschaft "Connected"
bereits zur Entwicklungszeit auf "True" steht - dann spare ich
mir das Öffnen zur Laufzeit.

Das funktioniert auch ganz wunderbar, allerdings bin ich mir
nicht sicher, ob das der richtige Weg ist, wenn zur Laufzeit
ein Fehler beim Öffnen der Datenbank passiert (z.B. Datenbank-
server nicht erreichbar o.ä.). Ich vermute, die dann fällige
Exception passiert beim Anlegen des Datenmoduls?, so daß ich
dann wohl schreiben müßte

try
myDataModule:=TMyDataModule.Create(nil);
try
myDataModule.TuWas
except
// Fehlerbehandlung für TuWas-Fehler
end;
myDataModule.Free
except
// Fehlerbehandlung für Datenbank-Öffnen-Fehler;
// .Free nicht nötig, da wegen Exception bei Create
//  gar nicht erst angelegt
end;

Stimmt das so richtig?

Zusatzfrage: Was wäre, wenn man in TMyDataModule.OnCreate z.B.
eine TStringList anlegen (und in .OnDestroy freigeben) würde?
Speicherleck, oder funktioniert automagisch? (Im letzteren
Fall: Lebt die TStringList ein paar Millisekunden lang, oder
würde sie gar nicht erst geboren?)

Die gleiche Frage für den Fall, daß man einen eigenen Construc-
tor baut, und darin z.B. schreibt

inherited Create(nil);
FStringList:=TStringList.Create;

und einen eigenen Destructor

FStringList.Free;
inherited Destroy;

und dann beim Create auf die Datenbank nicht zugegriffen werden
kann - klappt?, oder Probleme? Lebt die TStringList mal kurz?

Oooooder sollte man solche Dinge grundsätzlich vermeiden, indem
man zur Entwicklungszeit Connectedúlse setzt, das Create dadurch
(i.d.R.) niemals schiefgehen läßt und dem Datenmodul eine Property
Connected spendiert, die der aufrufende Prozeß nach dem (i.d.R.
immer erfolgreichen) Create prüfen kann?

Wie ist da der "gute" Programmierstil?

Danke & Gruß Matthias.

[ Auf dieses Posting antworten ]

Antworten