Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Dynamische Datenstrukturen in .NET (https://www.delphipraxis.net/91142-dynamische-datenstrukturen-net.html)

Elvis 30. Apr 2007 12:07

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von Phoenix
Wobei.. wäre das nicht mit einem Array leichter zu erreichen?

Hmpf? :shock:
Zitat:

Zitat von Raffigator
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
arr: array of ...;
...
setLength( arr, <Größe>);

Ja, vielleicht ist das wirklich das sinnvollste...ich werde mal in diese Richtung weiter denken

Nein, nein und nochmals nein!
  • Punkt1: .Net kennt keine dynamischen Arrays
  • Punkt2: Was Delphi anstellen muss um sowas zu emulieren ist alles andere als feierlich.
    Es ist sogar ziemlich lahm.
Du brauchst keine Records für die Knoten, da kannst du genauso gut Klassen nehmen.
Records haben in .Net auf'm Heap nix zu suchen, das ist alles andere als performant. (siehe "Boxing" in egal welcher(m) .Net-Doku oder Buch)
btw: Why setlength is evil™
In .Net >= 2.0 gibt es beides: List<T> (array basiert) und Linked<T>.
In 1.1 kannst du also entweder mit der ArrayList arbeiten oder dir schnell eine verkette Liste friemeln. ;)

Phoenix 30. Apr 2007 12:13

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von Elvis
Zitat:

Zitat von Phoenix
Wobei.. wäre das nicht mit einem Array leichter zu erreichen?

Hmpf? :shock:
[...]
In 1.1 kannst du also entweder mit der ArrayList arbeiten [...]

Was'n nu? Erst schockiert tun und dann das gleiche Vorschlagen? :zwinker:

Elvis 30. Apr 2007 12:23

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von Phoenix
Was'n nu? Erst schockiert tun und dann das gleiche Vorschlagen? :zwinker:

Zu heiß geduscht, heut' früh? :mrgreen:
Das eine ist ein BCL Klasse, die intern ihre Daten in einem Array verwaltet. (Klassisches verdoppeln wenn Count >= Capacity), das andere taugt höchstens was um sich am generierten IL zu belustigen.
Oder in Delphi-Speak: ArrayList == TList mit Object statt Pointer als Elementtyp.

System.Array ist immutable, will heißen eine Instanz mit 5 Elementen kann nicht plötzlich 6 haben.
Delphi löst das indem es Zwischenvariablen einbaut und alles immer schön hin und her schubst.

jmit 30. Apr 2007 12:36

Re: Dynamische Datenstrukturen in .NET
 
Hallo,

Zitat:

Zitat von mkinzler
Sie basieren ja auf Zeigern, welche man vermeiden sollte

Was spricht gegen Zeiger, warum sollte man diese vermeiden?
Sie werden wohl unter Delphi/Pascal nicht so oft verwendet, aber dies ist ja kein Grund diese ganz zu meiden.

Gruß Jörg

mkinzler 30. Apr 2007 12:40

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Was spricht gegen Zeiger, warum sollte man diese vermeiden?
Es get hier um .Net

Phoenix 30. Apr 2007 12:41

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von jmit
Zitat:

Zitat von mkinzler
Sie basieren ja auf Zeigern, welche man vermeiden sollte

Was spricht gegen Zeiger, warum sollte man diese vermeiden?
Sie werden wohl unter Delphi/Pascal nicht so oft verwendet, aber dies ist ja kein Grund diese ganz zu meiden.

Wir reden hier von Delphi.NET, und das ist nunmal Typsicher. Und bei einem Pointer irgendwo in den Speicher hat man nunmal keine Ahnung, auf was für ein Datentyp da gezeigt wird.

Ergo -> Typunsicher, daher unsicherer Code, und damit nicht im Sinne von .NET.

ulrich.b 30. Apr 2007 12:44

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von jmit
Was spricht gegen Zeiger, warum sollte man diese vermeiden?
Sie werden wohl unter Delphi/Pascal nicht so oft verwendet, aber dies ist ja kein Grund diese ganz zu meiden.

... um Typsicherheit zu garantieren (Pointer sind nur (Speicher)Adressen und haben keinen Typen).

http://de.wikipedia.org/wiki/Typsicherheit

Raffigator 30. Apr 2007 14:13

Re: Dynamische Datenstrukturen in .NET
 
Also ist nun ArrayList das Stichwort? Das ganze sollte natürlich schon performant sein...Da die Listen auch relativ lang werden könnten im Programm, bietet sich dann wohl die ArrayList an, richtig?

jmit 30. Apr 2007 14:26

Re: Dynamische Datenstrukturen in .NET
 
Zitat:

Zitat von Phoenix
Zitat:

Zitat von jmit
Zitat:

Zitat von mkinzler
Sie basieren ja auf Zeigern, welche man vermeiden sollte

Was spricht gegen Zeiger, warum sollte man diese vermeiden?
Sie werden wohl unter Delphi/Pascal nicht so oft verwendet, aber dies ist ja kein Grund diese ganz zu meiden.

Wir reden hier von Delphi.NET, und das ist nunmal Typsicher. Und bei einem Pointer irgendwo in den Speicher hat man nunmal keine Ahnung, auf was für ein Datentyp da gezeigt wird.

Ergo -> Typunsicher, daher unsicherer Code, und damit nicht im Sinne von .NET.

Habt ja Recht, sollte genauer lesen.

Raffigator 30. Apr 2007 14:55

Re: Dynamische Datenstrukturen in .NET
 
Hmm, ArrayList ist ja gut und schön, aber wie kann ich dort eine Liste von Records erstellen?
Delphi-Quellcode:
...
type
 TMyRecord = record
    //mehrere Daten
  end;
...
var
 MyList : ArrayList;
 MyRecord : TMyRecord;
...
begin
...
 MyList := ArrayList.Create;
 MyList.Add(MyRecord);
...
end;
Lässt sich ja problemlos kompilieren, aber wie kann ich hinterher auf die Daten in meinem Array zugreifen?

MyList[0].RecordTeil funktioniert ja nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz