AGB  ·  Datenschutz  ·  Impressum  







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

empty Generic List

Ein Thema von stahli · begonnen am 5. Okt 2013 · letzter Beitrag vom 6. Okt 2013
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

empty Generic List

  Alt 5. Okt 2013, 11:31
Ich habe mich gewundert, dass bei debuggen einer for each Schleife bei einer leeren generischen Liste ein Objekt freigegeben wird.

Im Screenshot habe ich das mal zusammengefasst.
Sollte nicht eigentlich der Compiler den Schritt überspringen, wenn die Liste leer ist?
Miniaturansicht angehängter Grafiken
emptygenlist.png  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: empty Generic List

  Alt 5. Okt 2013, 11:33
Das ist der Enumerator der FOR-IN-Schleife, welcher da freigegeben wird.
Der, welcher da in GetEnumerator erzeugt wurde.


PS: Nimm mal Self.ClassName in die zu überwachenden Variablen auf.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Okt 2013 um 11:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: empty Generic List

  Alt 6. Okt 2013, 15:54
Ich dachte, der Compiler würde dann gar nicht erst soweit in die tiefere Ebene gehen, wenn die Liste eh leer ist.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: empty Generic List

  Alt 6. Okt 2013, 16:23
Es muß der Enumerator erstmal erstellt werden, damit Delphi ihn Fragen kann, ob was drin ist


Die FOR-IN-Schleife ist intern eigentlich eine While-Schleife

und bei Objekten wird dieses
Delphi-Quellcode:
for x in List do
  DoIt(x);
vom Compiler quasi in das übersetzt
Delphi-Quellcode:
temp := List.GetEnumerator;
try
  while temp.MoveNext do
    DoIt(temp.Current);
finally
  temp.Free;
end;


Ja, wenn Emba mal ein bissl auf die Community hören würde, dann hätte ich beim GetEnumerator z.B. ein NIL, als Result, vorgeschlagen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Okt 2013 um 16:32 Uhr)
  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 08:35 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