![]() |
Objekt automatisch erzeugen
Guten Tag zusammen,
ich habe eine Unit ohne Form, die diverse Methoden bereitstellen soll. In mehreren dieser Methoden brauche ich immer wieder mal ein TSQLConnection Objekt Nun habe ich also im privaten Teil der Unit eine Variable von diesem Typen deklariert. Allerdings kann ich diese dort nicht initialisieren. Ich finde es unschön, das in jeder Methode zu machen, wo ich das Objekt brauche. Ich suche also nach einer Möglichkeit, beim laden dieser Unit automatisch ein TSQLConnection Objekt zu erzeugen. |
AW: Objekt automatisch erzeugen
Entweder im initialization Abschnitt oder man verwendet ein DataModule
|
AW: Objekt automatisch erzeugen
Wenn du das in einer Klasse machst, dann schreib doch den Create Aufruf des Objektes in den Constructor der Klasse.
|
AW: Objekt automatisch erzeugen
Abgesehen davon ist das ein klassisches Beispiel für das Singleton-Pattern. Das Initialisieren verpackst du in eine statische Methode (zB. getInstance) die entweder die vorhandene Instanz zurückgibt oder eben eine neue erstellt.
|
AW: Objekt automatisch erzeugen
Zitat:
Sollte ich dich richtig verstanden haben, hier ein Beispiel in dem ein TStringList Objekt erzeugt wird.
Delphi-Quellcode:
//EDIT:
unit Unit2;
interface uses Classes; procedure TestAddStrings(s: String); implementation var sl: TStringList; procedure TestAddStrings(s: String); begin sl.Add(s) end; initialization sl := TStringList.Create; finalization sl.Free; end. Ups, sehe gerade, dass mkinzler es auch schon erwähnt hat. |
AW: Objekt automatisch erzeugen
Zitat:
Aber hier würde ich das auch in Erwägung ziehen (weil man sonst die ganze SW umbauen müsste). Allerdings findet der TE es blöd, die Connection immer explizit zu erzeugen. Ich würde mir ja eine Klasse bauen, die meine Verbindungen verwaltet. So könnte ich beliebig viele Connections erzeugen (z.B. um in Threads Daten parallel zu laden oder mit unterschiedlichen Datenbanken zu arbeiten etc.).
Delphi-Quellcode:
TConnectionManager = class
Public Function GetConnection : IConnection; Procedure Release (aConnection : IConnection); End; ... myConnection := connectionManager.GetConnection; Try ... Finally connectionManager.Release(myConnection); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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-2025 by Thomas Breitkreuz