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 Sauber Programmieren: Variablen zurücksetzen? (https://www.delphipraxis.net/49462-sauber-programmieren-variablen-zuruecksetzen.html)

Rakshasa 11. Jul 2005 20:47


Sauber Programmieren: Variablen zurücksetzen?
 
Hallo!!

Ist es eigentlich notwendig, die verwendeten Variablen eines begin...end am Schluss manuell zurückzusetzen, also z.B. so:

Delphi-Quellcode:
Procedure MeineProcedure;
var
s: String;
i: integer;
myarray: Array of TString;
begin

// code code code code


s := '';
i := -1;
SetLength(MyArray, 0);

end;
Oder macht Delphi das ausreichend von alleine?

[edit=alcaeus]code- durch delphi-Tags ersetzt. Bitte in Zukunft die richtigen Tags verwenden, Danke. Mfg, alcaeus[/edit]

brechi 11. Jul 2005 20:57

Re: Sauber Programmieren: Variablen zurücksetzen?
 
variablen innerhalb einer prozedur werden auf den stack abgelegt wenns nicht gerade ein string ist
aber da macht delphi das auch noch selber

einzigst bei komponenten die du erzeugst, die solltest du mit .free wieder freigeben

sniper_w 11. Jul 2005 21:00

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Zitat:

die solltest du mit .free wieder freigeben
Vielleicht besser wäre es:
Delphi-Quellcode:
FreeAndNil(MyObj);

BlackJack 11. Jul 2005 21:07

Re: Sauber Programmieren: Variablen zurücksetzen?
 
sollte man ein dynamisches array nicht auch besser wieder auf die länge null setzen (und eventuell noch finalize'n)?

Hansa 11. Jul 2005 21:16

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Das da geht in Richtung lokale/globale Variablen ! Woher soll denn das arme Programm wissen, was noch passiert ? Die Variablen müssen also nicht "zurückgesetzt" werden, sondern nur richtig initialisiet werden beim Programmstart.

BlackJack 11. Jul 2005 23:03

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Zitat:

Zitat von Hansa
Die Variablen müssen also nicht "zurückgesetzt" werden, sondern nur richtig initialisiet werden beim Programmstart.

naja das kann ich jetzt so nicht unterschreiben. auf jeden fall muss man bei lokalen variablen (also in proceduren etc.) alles an speicher was man sich selber holt auch wieder selber freigeben, also Create/Free, New/Dispose, Initialize/Finalize, GetMem/FreeMem etc., weil ansonsten speicerlecks entstehen würden, da ja nach verlassen der procedure die zugriffsadresse, die in einer lokalen variable gespeichert ist, futsch wäre.

aber "einfache" lokale variablen (wie z.b. Integer, Chars, statische Arrays etc) muss man nicht wieder auf einen standardwert setzen, da die variablen eh im stack liegen, der nach verlassen der procedure eh nichtmehr erreichbar ist.

Hansa 11. Jul 2005 23:16

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Zitat:

Zitat von BlackJack
...naja das kann ich jetzt so nicht unterschreiben..

Doch. :mrgreen:

Pseudemys Nelsoni 11. Jul 2005 23:17

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Zitat:

aber "einfache" lokale variablen (wie z.b. Integer, Chars, statische Arrays etc) muss man nicht wieder auf einen standardwert setzen, da die variablen eh im stack liegen, der nach verlassen der procedure eh nichtmehr erreichbar ist.
Ich glaube, das sind auch die Typen, auf die Hansas Post bezogen war.

BlackJack 11. Jul 2005 23:21

Re: Sauber Programmieren: Variablen zurücksetzen?
 
naja ein "array of TString" gehört da ja nicht unbedingt dazu, und das muss man sogar in zweifacher hinsicht freigeben - erst die TStrings einzeln, und dann noch das array auf Länge null setzen.

Phoenix 12. Jul 2005 06:40

Re: Sauber Programmieren: Variablen zurücksetzen?
 
Zitat:

Zitat von BlackJack
naja ein "array of TString" gehört da ja nicht unbedingt dazu

Die TSTringList hingegen schon, und wer ein Array anstelle von der nutzt ist gerade selber schuld. :tongue:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Seite 1 von 2  1 2      

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