AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Überprüfen ob ein Objekt existiert aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob ein Objekt existiert aber wie?

Ein Thema von Schuster · begonnen am 3. Jan 2005 · letzter Beitrag vom 27. Dez 2020
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#31

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 12. Jun 2013, 00:13
Doku http://docwiki.embarcadero.com/RADSt...amme_und_Units
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#32

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 12. Jun 2013, 08:33
@Furtbichler

Kannst du mal bitte kurz erläutern, welchen Zweck dieser Bereich erfüllt, bzw. wann dieser aufgerufen wird?:

Delphi-Quellcode:
initialization
  _finalized := false;
  _mediaplayer := nil;
finalization
  _finalized := true;
  FreeAndNil(_mediaplayer);
end
Danke euch allen!!!
Klar:
Beim Starten der Anwendung werden alle 'Initialization'-Bereiche aller eingebundenen (explizit und implizit) Units aufgerufen: der richtige Ort, um Variablen zu initialisieren. Global ist 'böse' bzw. sollte vermieden werden, aber wer statische Klassen albern findet, kann hier in the old fashioned way seine statischen Felder initialisieren.

Beim Beenden wird der 'Finalization'-Abschnitt aller Units aufgerufen. Hier kann man aufräumen.

Ich initialisiere die Variable '_mediaplayer' mit nil. Beim ersten Aufruf der Funktion 'Mediaplayer' wird sie initialisiert. Aber nur dann, wenn der Finalization-Abschnitt noch nicht durchlaufen wurde.
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#33

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 14. Jun 2013, 10:05
Danke euch beiden!
Werde mir das heute abend mal anschauen bzw. ausprobieren.
MFG
Steffen
  Mit Zitat antworten Zitat
derMischka

Registriert seit: 21. Jun 2007
Ort: Dresden
32 Beiträge
 
Delphi 7 Professional
 
#34

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 14. Jun 2013, 14:06
Hier noch ein weiter Ansatz:

Delphi-Quellcode:
function ObjectExists(aObj: TObject): boolean;
begin
  Result := False;
  if aObj = nil then exit;
  try
    Result := aObj.InheritsFrom(TObject);
  except
  end;
end;
derMischka
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#35

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 14. Jun 2013, 20:21
Hier noch ein weiter Ansatz:

Delphi-Quellcode:
function ObjectExists(aObj: TObject): boolean;
begin
  Result := False;
  if aObj = nil then exit;
  try
    Result := aObj.InheritsFrom(TObject);
  except
  end;
end;
derMischka
Leere Exception-Blöcke sind doch noch böser als globale Vars.
Philip
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#36

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 14. Jun 2013, 21:00
Hier noch ein weiter Ansatz:

Delphi-Quellcode:
function ObjectExists(aObj: TObject): boolean;
begin
  Result := False;
  if aObj = nil then exit;
  try
    Result := aObj.InheritsFrom(TObject);
  except
  end;
end;
derMischka
Leere Exception-Blöcke sind doch noch böser als globale Vars.
Absolut korrekt, obwohl hier 'eigentlich' eine scheinbar gute Absicht dahinter steckt, nämlich auch nicht genullte, aber ungültige Zeiger als solche zu erkennen.

Aber das kaschiert ja nur den eigentlichen Fehler. Und *das* ist sogar noch schlimmer als leere exception-Blöcke.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#37

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 15. Jun 2013, 00:32
Das ganze Konstrukt ist böse. An der Stelle im Speicher kann ja gerade rein „zufällig“ was stehen, was so aussieht wie ein Objekt. Und ausgerechnet in dem Fall, dass das Objekt gerade freigegeben wurde, ist es sehr wahrscheinlich, dass die Daten noch 1:1 dort stehen, obwohl das Objekt theoretisch nicht mehr existiert (es sei denn, Delphi nullt den Speicherbereich nach der Freigabe, tut es aber soweit ich weiß nicht).

Geändert von Namenloser (15. Jun 2013 um 01:01 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#38

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 15. Jun 2013, 00:45
Wie böser kann man eigentlich werden, also böser als *Böse*? Nicht das das hier abfärbt und irgendwie ein Eigenleben entwickelt.

Nichtsdestotrotz: Richtiger Einwand.
  Mit Zitat antworten Zitat
derMischka

Registriert seit: 21. Jun 2007
Ort: Dresden
32 Beiträge
 
Delphi 7 Professional
 
#39

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 15. Jun 2013, 17:37
zu meiner Verteidigung:

Da das Ergebnis mit False oben initialisiert ist, braucht man die "nur lesende" Funktion in der Exception-Klammer ncht weiter behandeln --> es wurde kein Code verändert (da nur gelesen) und bei einer Exception ist das richtige Ergebnis (False) ja schon im Register eax.

der Mischka
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#40

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 15. Jun 2013, 18:14
Besser? Oder auch noch böse?
Delphi-Quellcode:
function ObjectExists(aObj: TObject): boolean;
begin
  Result := aObj <> nil;
  if Result then
  try
    Result := aObj.InheritsFrom(TObject);
  except
    Result := false;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 12:37 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