AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Testen ob ein Objekt bereits erzeugt wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Testen ob ein Objekt bereits erzeugt wurde

Ein Thema von ThE_-_BliZZarD · begonnen am 18. Nov 2009 · letzter Beitrag vom 19. Nov 2009
Antwort Antwort
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#1

Testen ob ein Objekt bereits erzeugt wurde

  Alt 18. Nov 2009, 20:31
Hallo liebe Delphigemeinde,

zwar simpel aber mir fällt es leider nicht mehr ein.

Wie kann ich testen, ob ein Objekt bereits erzeugt wurde?

Z.b.:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    FMyTestSList: TStringList;

  // [...]
  implementation

procedure TMyTest.DoSomething();
begin
   // hier würde ich jetzt gerne testen ob das Objekt bereits durch
   FMyTestSList := TStringList.Create;
   // erzeugt wurde, und nur wenn dies noch nicht geschehen ist den Create() Befehl ausführen.

end;
Ich habe es mal probeweise mit SizeOf() probiert, was aber wie erwartet nichts sinnvolles ergeben hat.


Mit freundlichen Grüßen,

BliZZarD
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Testen ob ein Objekt bereits erzeugt wurde

  Alt 18. Nov 2009, 20:38
Delphi-Quellcode:
if not Assigned(FMyTestSList) then
  FMyTestSList := TStringList.Create;
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Testen ob ein Objekt bereits erzeugt wurde

  Alt 18. Nov 2009, 20:42
*Kopf-meets-Tischplatte*

Ok danke, ich wusste doch das es einfach war

// Noobfrage schließen
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#4

Re: Testen ob ein Objekt bereits erzeugt wurde

  Alt 18. Nov 2009, 20:47
Delphi-Referenz durchsuchenAssigned(obj) entspricht bei Objekten einem (obj <> nil).

PS: das geht aber nur, wenn vorher die Variable auch "genullt" war.
(als Feld in einem Objekt ist dieses zum Glück standardmäßig der Fall, ansonsten mußt du explizit vorher obj:=nil; setzen)

Und Freigegeben wird das Objekt dann mit FreeAndNil(obj) (oder wieder von Hand obj.Free; und obj:=nil; ), also wenn nach dem Freigeben nochmals geprüft werden soll.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Testen ob ein Objekt bereits erzeugt wurde

  Alt 18. Nov 2009, 20:51
Wenn du erreichen willst, dass ein Objekt nur einmal erzeugt wird, dann solltest du dir das Design Pattern "Singleton" anschauen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Testen ob ein Objekt bereits erzeugt wurde

  Alt 19. Nov 2009, 09:55
Zitat von generic:
Wenn du erreichen willst, dass ein Objekt nur einmal erzeugt wird, dann solltest du dir das Design Pattern "Singleton" anschauen.
Und dabei auch sicherstellen dass nicht zwei Threads das gleiche Singleton erstellen können - im RTL Code wird das selbst bei so simplen Dingen wie TEncoding.UTF8 (auch ein Singleton) gemacht, die einen unveränderbaren Zustand haben
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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