AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein wenn a nicht existiert dann mache...
Thema durchsuchen
Ansicht
Themen-Optionen

wenn a nicht existiert dann mache...

Ein Thema von Overprogrammer · begonnen am 16. Jun 2011 · letzter Beitrag vom 17. Jun 2011
Antwort Antwort
Overprogrammer

Registriert seit: 10. Jun 2011
22 Beiträge
 
Delphi 7 Personal
 
#1

wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 10:15
Hallo Leute,
hab ein Problem und zwar möchte ich programmieren,
dass wenn eine var (zb.a) nicht existiert, dass dann das und das gemacht werden soll..
wie mache ich das?
Brauche Hilfe
LG Overprogrammer

Geändert von Overprogrammer (16. Jun 2011 um 20:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#2

AW: wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 10:17
Wenn Du eine variable deklarierst, dann existiert sie zwangsläufig immer. Es wird z.B. immer ein Speicherbereich für sie allokiert.

Sofern 'a' z.B. ein Pointer auf irgend ein Objekt ist, kannst Du allerdings mit if not Assigned(a) then ... prüfen, ob der variable ein Wert zugewiesen wurde.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 10:28
Wenn etwas in A nicht existiert, dann Assigned(a), a=nil oder Dergleichen.

Wenn A selber nicht existiert, dann {$IF not Declared(A)} ... {$IFEND} (Type, Variable und Konstante geht ... Unit/Datei geht nicht)

Prüfen auf Compilerschalter: {$IFOPT ...} , {$IFDEF ...} , bzw. {$IF Defined(...)} .



PS: das "Brauche Hilfe" war nicht notwendig, da es wohl klar ist
und zuviele Smilie und Statzzeichen sind evenfalls unnötig.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Jun 2011 um 10:32 Uhr)
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#4

AW: wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 12:12
Beim Übergeben von Objektzeigern kann das Freigeben der referenzierten Instanz zu Problemen führen. Hier habe ich mir angewöhnt, ein Listenobjekt anzulegen, welches zum Dereferenzieren von IDs genutzt wird (die Arrayelemente sind ID-Objekt-Paare) und dann nur einmalig dieses Listenobjekt zu übergeben. Alle Bezüge auf gelistete Objekte geschehen mit IDs, mit denen entweder nach einem Objekt aufgelöst werden kann oder eine klare Aussage über die Existenz des Objekts gewonnen werden kann.

Hat man wenige Objekte, lässt sich die Auflösung durch lineares Suchen umsetzen, sind es mehr, kann man sortierte Listen per divide&conquer oder über Hashfunktionen strukturiert durchsuchen.
Power is nothing without TControl
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 12:37
Wenn man eine Variable auf den Inhalt prüfen möchte, dann muß man diese, beim Freigeben, natürlich auch zurücksetzen.

Delphi-Quellcode:
o.Free;
o := nil;
Da es hier aber ein Problem gibt, wenn es im Free eine Exception gibt, wurde Delphi-Referenz durchsuchenFreeAndNil bereitgestellt,
welches erst die Variable auf NIL setzt und dann das Objekt frei gibt.


Wer jetzt parallel mit Kopieen der alten Variable arbeitet (z.B. in irgendwelchen Listen, anderen Variablen oder Parametern ohne VAR), ist selber Schuld, wenn dort noch der alte Objektzeiger drinsteht, selbst nach Freigabe/Änderung in der Originalvariable.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Jun 2011 um 13:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: wenn a nicht existiert dann mache...

  Alt 16. Jun 2011, 12:53
Ich glaube ihr spekuliert zu sehr was hinter der Ausgangsfragé steckt, ich denke das hier ein wenig Konkretisierungsbedarf besteht.
Wenn etwas in A nicht existiert, dann ....
Wenn A selber nicht existiert, dann ...
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 11:52 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