AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi nicht initialisierte Variable erzeugt keine Warnung/Hinweis
Thema durchsuchen
Ansicht
Themen-Optionen

nicht initialisierte Variable erzeugt keine Warnung/Hinweis

Ein Thema von AJ_Oldendorf · begonnen am 13. Nov 2019 · letzter Beitrag vom 10. Jun 2020
Antwort Antwort
Seite 2 von 3     12 3      
Incocnito

Registriert seit: 28. Nov 2016
223 Beiträge
 
#11

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 13. Nov 2019, 16:25
Das FreeAndNil sehe ich gar nicht mal als Problem.
Ich könnte ja auch Funktionen nutzen um Variablen zu initialisieren:
Delphi-Quellcode:
Procedure Testa(var test : TStringList);
Begin
  test := TStringList.Create();
  test.Add('Testzeile');
End;

Procedure Testb();
var
  slTemp : TStringList;
Begin
  Testa(slTemp); // alles wunderbar
  ShowMessage(slTemp.Text);
  slTemp.Free();
End;
Das Problem ist eher, dass er bei "sl.Text = '';" direkt in der ersten Zeile,
nicht meckert, obwohl "sl" definitiv nicht initialisiert ist.
Wird das wohl durch "try-except" wegoptimiert?

Und lokale Variablen muss man trotzdem freigeben.
Arrays braucht man nicht mit "SetLength(x, 0);" freigeben,
aber sonst muss alles, was erzeugt wird auch freigegeben werden.
Ahja: Interfaces haben einen Referenzzähler, so dass das noch
wieder anders läuft.
Auch zur Laufzeit erstellte Komponenten muss man nicht unbedingt freigeben,
weil sie ja einem Parent zugeordnet werden und freigegeben werden, wenn
das Parent freigegeben wird.
Mehr Außnahmen fallen mir gerade nicht ein, ansonsten empfehle ich MadExcept
zum Testen auf Speicherlecks.

MfG Incocnito
  Mit Zitat antworten Zitat
Alt 13. Nov 2019, 16:57     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 14. Nov 2019, 05:42
Es wird immer Konstellationen geben, in denen der Compiler nicht warnt oder nicht warnen kann. Von daher finde ich es gut, dass in vielen Fällen gewarnt wird, verlasse mich aber nicht darauf.

Es gibt auch diverse Tools, die zusätzliche Analysen machen:
TMS FixInsight, Pascal Analyzer, CodeHealer, ...

Auch zur Laufzeit erstellte Komponenten muss man nicht unbedingt freigeben,
weil sie ja einem Parent zugeordnet werden und freigegeben werden, wenn
das Parent freigegeben wird.
Owner <> Parent!
Der Owner kümmert sich um die Freigabe, das Setzen des Parents bestimmt wo die Komponente angezeigt wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (14. Nov 2019 um 05:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 14. Nov 2019, 07:53
Auch der Parent geht im Destruktor sein Controls-Array durch und gibt die darin enthaltenen Elemente frei.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
223 Beiträge
 
#14

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 14. Nov 2019, 08:17
Hier wir das Objekt slTemp in der Funktion Testa() initilialisiert, und diese wird in Testb() aufgerufen. Wo ist das Problem?
Exakt darauf wollte ich hinaus!

Auch der Parent geht im Destruktor sein Controls-Array durch und gibt die darin enthaltenen Elemente frei.
Exakt daran dachte ich auch ... das "Parent <> Owner" gibt mir gerade zu denken.

Abgesehen davon gehe ich bei selbst erstellten Komponenten immer hin und gebe die auch von Hand frei,
ich weiß halt nur, dass es wohl scheinbar auch ohne diesen Aufwand ohne Speicherlecks gehen soll.

MfG Incocnito
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#15

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 14. Nov 2019, 11:36
https://quality.embarcadero.com/browse/RSP-19835
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 14. Nov 2019, 12:10
Auch der Parent geht im Destruktor sein Controls-Array durch und gibt die darin enthaltenen Elemente frei.
Exakt daran dachte ich auch ... das "Parent <> Owner" gibt mir gerade zu denken.
Dann habe ich mich da geirrt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#17

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 10. Jun 2020, 09:35
Fehler existiert in D10.4 immernoch.
Neuen Bug-Report aufgemacht. Bitte voten...

https://quality.embarcadero.com/browse/RSP-29516
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 10. Jun 2020, 09:53
Ist natürlich ärgerlich, aber weshalb war es nötig dafür noch ein Ticket aufzumachen?
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#19

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 10. Jun 2020, 10:54
Ich dachte mir, wenn der andere Report nicht bearbeitet wird, wird er vielleicht bearbeitet wenn er unter dem neusten Delphi steht. Da gucken die Entwickler vielleicht eher drauf und reagieren, weil dazu noch einige Updates kommen werden.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#20

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 10. Jun 2020, 13:16
Mein Report wurde gerade geschlossen mit Verweis auf den Report von Bernhard Geyer
Leider existiert dieser ja schon seit einigen Versionen.
@Bernhard Geyer: Kannst du dein Report mal aktualisieren, dass dieser Fehler auch noch in 10.4 enthalten ist? Es steht ja nur dabei, dass dieser in 10.2 vorhanden ist. Vielleicht wird er dann eher bearbeitet weil gevotet wurde ja schon dafür
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:57 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