Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Objekt automatisch erzeugen (https://www.delphipraxis.net/185563-objekt-automatisch-erzeugen.html)

SyntaxXx 20. Jun 2015 07:53

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.

mkinzler 20. Jun 2015 07:56

AW: Objekt automatisch erzeugen
 
Entweder im initialization Abschnitt oder man verwendet ein DataModule

Aviator 20. Jun 2015 10:56

AW: Objekt automatisch erzeugen
 
Wenn du das in einer Klasse machst, dann schreib doch den Create Aufruf des Objektes in den Constructor der Klasse.

BUG 20. Jun 2015 11:18

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.

Popov 20. Jun 2015 11:26

AW: Objekt automatisch erzeugen
 
Zitat:

Zitat von SyntaxXx (Beitrag 1305851)
Objekt automatisch erzeugen

Ich verstehe den Titel anders als den Text darunter. Den Titel verstehe ich so, dass du in einer Unit ein Objekt nutzen willst und fragst wo du es erzeugen kannst.

Sollte ich dich richtig verstanden haben, hier ein Beispiel in dem ein TStringList Objekt erzeugt wird.
Delphi-Quellcode:
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.
//EDIT:

Ups, sehe gerade, dass mkinzler es auch schon erwähnt hat.

Dejan Vu 20. Jun 2015 12:04

AW: Objekt automatisch erzeugen
 
Zitat:

Zitat von BUG (Beitrag 1305872)
Abgesehen davon ist das ein klassisches Beispiel für das Singleton-Pattern.

Und das ist i.A. keine gute Idee, so ein Singleton. Jedenfalls sagt das der Software-Ästhet.
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 06:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz