AGB  ·  Datenschutz  ·  Impressum  







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

Implementierung TList<>

Ein Thema von freimatz · begonnen am 22. Mär 2022 · letzter Beitrag vom 23. Mär 2022
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#1

Implementierung TList<>

  Alt 22. Mär 2022, 08:02
Hallo,
wie ist denn TList<> intern implementiert. Mich interessiert die Speicherung der Daten.
Wenn ich z.B. eine TList<TLabel> ist TLabel eine Klasse. Dann wird es wie ich mich vage erinnere einen Speicherblock geben, der Referenzen (also Pointer) auf die Labels enthält.

Wenn ich dagegen z.B. ein TList<Byte> habe, sind es da Referenzen auf Bytes und die Bytes sind separat gespeichert? Oder werden in dem Speicherblock die Bytes selbst gespeichert?

Zusatzfrage: wie ist es bei Spring4D
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Implementierung TList<>

  Alt 22. Mär 2022, 08:09
Aus eben dem Grund gibt es neben einer TList<T> noch die TObjectList<T>:

https://docwiki.embarcadero.com/Libr...t%20is%20freed.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Implementierung TList<>

  Alt 22. Mär 2022, 08:20
Danke für Deine Rückmeldung. Leider beantwortet das keine meiner Fragen. Zudem ist TObjectList ein Nachfahren von TList und ändert an der Art der Speicherung nichts.

Habe nun selber getested. In function TList<T>.Add(const Value: T): Integer; gibt es eine Fallunterscheidung. Bytes und andere native Typen werden auch als solche gespeichert.

Bleibe noch die Frage nach Spring4D.
Nachtrag: habe auch mal reingeschaut, verstehe das aber zu wenig.

Geändert von freimatz (22. Mär 2022 um 08:37 Uhr)
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
492 Beiträge
 
Delphi 12 Athens
 
#4

AW: Implementierung TList<>

  Alt 22. Mär 2022, 09:23
Intern erfolgt die Zuweisung in der Unit System.Generics.Collections per ListHelper.
Delphi-Quellcode:
function TListHelper.InternalAdd1(const Value): Integer;
...
PByte(FItems)[Result] := Byte(Value);
...
Das sieht für mich so aus, dass intern ein dynamisches Array of Byte erstellt wird.
Da du anscheinend die Pro hast, sollte das im Debugger mit F7 im Add nachvollziehbar sein.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Implementierung TList<>

  Alt 22. Mär 2022, 10:13
Hallo,
bin irritiert. Genau das schrieb ich doch in meinem Beitrag vor Deinem
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Implementierung TList<>

  Alt 22. Mär 2022, 10:37
Ich bin eh irritiert über die Fragestellung.
Dir liegen doch die Quelltexte und der Debugger vor.
Was genau hast du im ersten Beitrag erwartet?
Das es jemand nochmal in Prosaform beschreibt?
  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 23:24 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 by Thomas Breitkreuz