AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TList / dyn. Array - Was steckt dahinter?
Thema durchsuchen
Ansicht
Themen-Optionen

TList / dyn. Array - Was steckt dahinter?

Ein Thema von Mr_G · begonnen am 25. Mai 2008 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: TList / dyn. Array - Was steckt dahinter?

  Alt 26. Mai 2008, 14:28
Zitat von Khabarakh:
Zitat von 3_of_8:
Record: Ja
Nein !
Das ist doch der einzige Vorteil gegenüber Klassen: Records sind Wertetypen.
Hoppala, hab ich da ernsthaft "ja" geschrieben? Das war in Versehen, ich ändere das gleich...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#22

Re: TList / dyn. Array - Was steckt dahinter?

  Alt 26. Mai 2008, 18:06
So, Lehrer interviewt und folgendes rausbekommen:
Wird ein dynamisches Array erstellt so wird der Speicher nach dem hier schon beschriebenen Muster alloziert. Wird das Array nun jedoch erweitert so wird lediglich ein "neuer" Speicherblock für die Erweiterung reserviert und am Ende des ersten Speicherblocks findet sich ein Zeiger auf den nächsten. Zur Indexberechnung wird dann zusätzlich eine "Tabelle" herangezogen, die den Startindex und die dazugehörige Adresse des Bereichs enthält. Diese Art der Verknüpfung ähnelt der verketteten Liste und hätte theoretisch den Vorteil, das keine riesigen Datenmengen durch den Speicher geschoben werden müssen.
Ich hab mal die kleine schematische Darstellung dieser Erklärung angehängt.
Was nun Delphi letztendlich aus dem dynamischen Array macht konnte mir mein Lehrer nicht mit Gewissheit sagen (evtl. könnte sich da im Laufe der Versionen was an der Implementierung verändert haben) aber ich finde das Prinzip schon einleuchtend. In wie weit hat denn nun wer Recht?
Miniaturansicht angehängter Grafiken
array_412.jpg  
Jan
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: TList / dyn. Array - Was steckt dahinter?

  Alt 26. Mai 2008, 19:06
Wir haben natürlich Recht

In Delphi ist es immer so, dass ein Array zusammenhängt. Dazu muss es, wenn es verlängert wird ggf. umkopiert werden.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: TList / dyn. Array - Was steckt dahinter?

  Alt 27. Mai 2008, 02:51
Jub, Delphi kopiert um. Wäre das nicht so, könnte man Indizierung via Pointerarithmetik auch vergessen, und gelegentlich ist das auch heutzutage noch eine schön performante Alternative. Es mag sein, dass manche andere Sprachen diese Form von Fragmentierung eines dyn. Arrays betreiben, Delphi macht es allerdings definitiv nicht.

Spaßig ist in Delphi auch die mitgelieferte TList. Der Name suggeriert eine Linked-List, aber hinter TList steckt wieder nichts anderes als ein dyn. Array (of Pointer in diesem Fall). TList verwaltet lediglich das Wachsen/Schrumpfen des Arrays automatisch, und bietet ein ähnliches Interface wie eine doppelt verkettete Liste. Das hat seine Vor- aber auch Nachteile. Eine Liste im allgemeinen Sinne ist es jedoch nicht.
Hier gilt also: Im Spezialfall Delphi stimmt die Aussage, dass ein TList auf einem dyn. Array basiert - allgemein ist eigentlich eine Menge von Objekten gemeint, von denen jedes einen Verweis auf seinen Nachfolger (und ggf. Vorgänger) besitzt, und sonst keine Organisation in Arrays o.ä. passiert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 13:09 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