AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht erstellle Komponente abfragen?

Ein Thema von Hallo_Thomas · begonnen am 20. Apr 2006 · letzter Beitrag vom 20. Apr 2006
Antwort Antwort
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Nicht erstellle Komponente abfragen?

  Alt 20. Apr 2006, 19:56
Mal ne Frage grundsätzlich, ich erstelle zur Laufzeit ne Komponente, die immer mah wieder gelöscht und erstellt wird.

Wie kann ich zur Laufzeit abfragen, ob diese Komponente überhaupt existiert?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Nichtersteltle Komponente abfragen?

  Alt 20. Apr 2006, 19:57
Form.FindComponent('<komponame>');
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: Nichtersteltle Komponente abfragen?

  Alt 20. Apr 2006, 20:05
Zitat von mkinzler:
Form.FindComponent('<komponame>');
Dies funktioniert nur, wenn ich auch der Komponente auch ein Name zugewiesen wird, was nicht zwingend der Fall sein muss (gerade weil sie dynamisch erstellt wird )
Mein Tip ist, alle Objekte ueber Delphi-Referenz durchsuchenFreeAndNil freizugeben, bzw. Instanzzeiger nach dem Freigeben haendisch auf nil setzen. Das erleichtert dein Problem dann auf eine einfache Abfrage:
Delphi-Quellcode:
FreeAndNil(MyComponent);
//...
if (MyComponent <> nil) then
  MyComponent.DoSomething()
else
  //blubb
greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Nicht erstellle Komponente abfragen?

  Alt 20. Apr 2006, 20:14
Danke erst mah echt nett ich glaub das geht bei mir nicht.

Um mah eh bissl genauer zu werden ich will vor meine Abfrage ne if abfrage platztieren.

Ob die Komponente exitiert(True) oder nicht(False).Mehr möchte ich gar ni wissen.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Nichtersteltle Komponente abfragen?

  Alt 20. Apr 2006, 20:46
Zitat von JasonDX:
Zitat von mkinzler:
Form.FindComponent('<komponame>');
Dies funktioniert nur, wenn ich auch der Komponente auch ein Name zugewiesen wird, was nicht zwingend der Fall sein muss (gerade weil sie dynamisch erstellt wird )
Vielleicht löst es durch:
Form.FindComponent(MyKomponent.Name) ?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Nichtersteltle Komponente abfragen?

  Alt 20. Apr 2006, 20:58
Zitat von xZise:
Zitat von JasonDX:
Zitat von mkinzler:
Form.FindComponent('<komponame>');
Dies funktioniert nur, wenn ich auch der Komponente auch ein Name zugewiesen wird, was nicht zwingend der Fall sein muss (gerade weil sie dynamisch erstellt wird )
Vielleicht löst es durch:
Form.FindComponent(MyKomponent.Name)
Oehm, das is ja genau der Punkt: Ich weiss ja nicht, obs MyComponent noch gibt, also kann ich mir nicht sichersein, dass das funktioniert
(ich weiss jetzt nicht genau, was bei TComponent(nil).Name passiert, aber ich kann mir vorstellen, dasses nix gutes is )
weiters is mir bei der Methode noch eingefallen: In der Situation muss die Komponente das Formular als Owner eingetragen haben. Wenn die Komponente bspw. auf einem anderen Formular oder einem Frame liegt, ist das nicht der Fall. Natuerlich koennte man das dann mit MyComponent.Owner.FindComponent(MyComponent.Name) <> nil ueberpruefen, fuer eine nutzbare Methode halte ich das allerdings nicht, denn: Ich weiss nicht, ob die Komponente existiert, aber ich verwend ihre Eigenschaften und Methoden ums rauszufinden...

Wie gesagt: IMO ist es die sauberste Loesung, die Instanz mit Delphi-Referenz durchsuchenFreeAndNil freizugeben und bei der Ueberpruefung mit nil zu vergleichen.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Nicht erstellle Komponente abfragen?

  Alt 20. Apr 2006, 22:05
Wie wärs mal mit

if assigned(MyComponent) then ...
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#8

Re: Nicht erstellle Komponente abfragen?

  Alt 20. Apr 2006, 22:30
Dürft nix bringen, weil Assigned meines Wissens nach nur kontrolliert, ob der Zeiger auf einen Speicherbereich zeigt,
also im Ende nix anderes als (Zeiger<> nil)

mfG

Markus
Markus
  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 14:58 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