Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "with"-variable? (https://www.delphipraxis.net/79604-variable.html)

xZise 25. Okt 2006 10:46


"with"-variable?
 
Ich habe folgenden Code:
Delphi-Quellcode:
  with TfrmSettings.Create(nil) do
    try
      ShowModal(nil);
    finally
      FreeAndNil(???);
    end;
Was muss anstelle der ??? hin? Also ich möchte die oben erstellte Varible free'n und nil'n...? Ist es "self"?
Also "self" ist es nicht:
Zitat:

[Error] BBCodePlugin.dpr(32): Undeclared identifier: 'self'

Gollum 25. Okt 2006 10:50

Re: "with"-variable?
 
Hallo,

da geht nur Free!
Da du keine Variable benutzt, kannst Du auch nichts auf nil setzen.

xZise 25. Okt 2006 10:55

Re: "with"-variable?
 
Achso ;) Ist ja auch irgendwie logisch :D
Aber was wäre jetzt wenn ich die Variable doch bräuchte? Also z.B. für Showmessage o.ä.?

r2c2 25. Okt 2006 11:04

Re: "with"-variable?
 
Zitat:

Zitat von xZise
Aber was wäre jetzt wenn ich die Variable doch bräuchte? Also z.B. für Showmessage o.ä.?

Dann musst du auf with verzichten:
Delphi-Quellcode:
var
  Objekt: TKlasse;
begin
  Objekt := TKlasse.Create;
  try
    Objekt.Eigenschaft := Wert;
  finally
    FreeAndNil(Objekt);
    // oder in dem Fall reicht auch Free
    Objekt.Free;
  end;
Zumal with sowieso n komisches Konstrukt is...

mfg

Christian

Jürgen Thomas 25. Okt 2006 11:07

Re: "with"-variable?
 
Zitat:

Zitat von xZise
Achso ;) Ist ja auch irgendwie logisch :D
Aber was wäre jetzt wenn ich die Variable doch bräuchte? Also z.B. für Showmessage o.ä.?

In dem Fall musst Du ohne FreeAndNil oder ohne with-Konstrukt arbeiten, z.B.:
Delphi-Quellcode:
var stg: TfrmSettings;
// usw.
stg = TfrmSettings.Create(nil);
try
  stg.ShowModal;
finally
  FreeAndNil(stg);
end;
Gruß Jürgen

[/edit]ohne rote Karte...

mkinzler 25. Okt 2006 11:11

Re: "with"-variable?
 
Oder du kombinierst die beiden Möglichkeiten:
Delphi-Quellcode:
var
  Objekt: TKlasse;
begin
  Objekt := TKlasse.Create;
  with Objekt do
  ...
  end;

xZise 25. Okt 2006 11:23

Re: "with"-variable?
 
Zitat:

Zitat von mkinzler
Oder du kombinierst die beiden Möglichkeiten:

Ich benutzte aber with eigentlich nur, um mir eine lokale Varibale zu speichern. Meißt eben, wenn ich Inis habe o.ä.

Abe danke @ all ;)

Elvis 25. Okt 2006 11:50

Re: "with"-variable?
 
Wofür zum Geier brauchst du FreeAndNil wenn du gar keine greifbare Referenz hast, die nach dem Free auf einen ouchy banana-Bereich zeigt?
Lass mich raten: Pawlow? Du siehst Create und denkst gleich an "FreeAndNil" weil dir irgendwann irgendjemand gesagt hat es sein besser, right?
Ich benutze fast nie FreeAndNil, schlicht und ergreifend weil ich hauptsächlich Dinge freigebe, die danach eh aus'm Scope flutschen oder im "Destruktor". ;)

btw: Es ist aber immer ein guter Tip nicht "with" zu benutzen. "with" in Delphi ist einfach zu diffus.

Luckie 25. Okt 2006 11:55

Re: "with"-variable?
 
Ich benutze auch immer FreeAndNil. Habe ich mir angewöhnt, damit, wenn man doch mal mit Assigned prüfen muss, nicht auf die Fresse fällt.

Elvis 25. Okt 2006 11:59

Re: "with"-variable?
 
Zitat:

Zitat von Luckie
Ich benutze auch immer FreeAndNil. Habe ich mir angewöhnt, damit, wenn man doch mal mit Assigned prüfen muss, nicht auf die Fresse fällt.

Ja, genau dafür isses da. Falls man danach noch eine Referenz hat, die überhaupt prüfbar wäre.
Das ist hier nicht der Fall.
Genauso wenig wie es in einem Destruktor der Fall ist, oder am Ende einer Methode. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.
Seite 1 von 2  1 2      

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