![]() |
Array: Maximale Anzahl nicht festlegen
Seit mir bitte nicht böse, dass ich das frage. Als ich aray in der Suche eingegeben habe, kamen mir direkt 40 Seiten Suchergebnisse entgegen. Die erste Seite habe ich noch durchsucht, aber 40...
Ich habe jedenfalls einen Record:
Delphi-Quellcode:
Und möchte einen Array davon. Da ich den Array aus einer Textdatei einlesen möchte ergibt sich das Problem, dass diese Deklaration:
TArbeit =record
datum :String; von :integer; nach :integer; zeit :integer; end; Arbeit :array[0..100] of TArbeit; unzireichend ist, weil ich nicht weiß, wieviele Einträge die Textdatei hat. Dazu kommt noch, dass ich die Array verändere und welche lösche und hinzufüge. Daher meine Frage: Kann man Arrays quasi "dynamisch" erzeugen?? |
Re: Array: Maximale Anzahl nicht festlegen
|
Re: Array: Maximale Anzahl nicht festlegen
Hi!
Ja, das geht! Und den Namen hast Du auch schon richtig erraten: "dynamische Arrays". Die Deklaration sieht so aus:
Delphi-Quellcode:
Und die Größe legst Du so fest:
var
myArr : Array of Integer;
Delphi-Quellcode:
Damit hat das Array dann Elemente von 0 bis 9.
SetLength(myArray, 10);
ABER: Rufe SetLength so wenig wie möglich auf! Es kann unter Umständen viel Speicher fressen und das Schnellste ist es auch nicht. Ich habe ![]() MfG Peter |
Re: Array: Maximale Anzahl nicht festlegen
Nimm lieber TList anstelle von Arrays, das ist wesentlich schneller
|
Re: Array: Maximale Anzahl nicht festlegen
kann SirThornberry nur zustimmen...
lade ein Datenpaar aus der Datei in eine Variable vom Typ TARbeit und hänge diese Variable dann der Liste mit myList.Add(variable) an. dann springst du weiter zum nächsten Paar usw... --> ne simple Schleife :wink: ist sauberer als mit dynamischen arrays zu arbeiten! |
Re: Array: Maximale Anzahl nicht festlegen
mhh. TList? Never heard... Such nach TList konnte mein wissen nicht erweitern. Kann mir das jemand kurz erklären?
|
Re: Array: Maximale Anzahl nicht festlegen
|
Re: Array: Maximale Anzahl nicht festlegen
wie der name schon ausdrückt: eine liste..
genauer: eine Liste von objekten bzw Pointern |
Re: Array: Maximale Anzahl nicht festlegen
Oh gott... Ich verstehe mal wieder nur airport...
Also auf der Suche danach herauszufinden, wo der Unterschied zwischen ner Variable mit Pointer (fängt schon damit an, dass ich nicht wirklich ganz genau weiß, was ein Pointer ist) herauszufinden, bin ich auf ![]() Nun habe ich verstanden, dass eine Variable ohne pointer weniger Platz im RAM braucht. Außerdem ist die "Bedienung" mit Pointern viel komplizierter, denn man muss immer mit new(Variable); erst irgendwas machen. Da erscheint mir die Variable ohne Pointer so spontan besser... Was mache ich denn jetzt :?: :cry: :? |
Re: Array: Maximale Anzahl nicht festlegen
Schon gut... Ich habe durch Zufall etwas gefunden, was wohl viel besser hgeeignet ist:
![]() Trotzdem danke für eure Hilfe!!! |
Re: Array: Maximale Anzahl nicht festlegen
Zitat:
das ist eine Möglichkeit. Bedenke jedoch, dass in .NET (un-)typisierte Dateien nicht mehr unterstützt werden, da die Record-Größe in .NET je nach Zielplattform verschieden ist. mfG mirage228 |
Re: Array: Maximale Anzahl nicht festlegen
Zitat:
Aber trotzdem würde mich mal interessieren, warum die recordgrößen sich da ändern sollten??? |
Re: Array: Maximale Anzahl nicht festlegen
Zitat:
|
Re: Array: Maximale Anzahl nicht festlegen
ahsö...
Aber wenn ich 'ne Integerveraiable in 'ner Textdatei speichere, ändert die sich doch nicht... Wenn ich was größeres als 2 147 483 647 reinschreibe, dann versteht da nur ein 64bit-System, es sei denn ich verwende 64-Bit Variablen (das funzt ja auch irgendwie auf 'nem 32bit system, muss der ja nur irgendwie konvertieren... Also wenn ich 32bit schreibe, läuft das auch auf 64bit. Lässt sich also kompatibel schreiben. Richtig???? |
Re: Array: Maximale Anzahl nicht festlegen
Wenn du einen 32Bit-Integer in eine Datei schreibst, ist diese 32 Bit groß. DAs gleiche Programm auf einem anderen Rechner will die Datei lesen, geht aber von einer Größe von 64 aus. Dadurch liest es völlig falsche Daten.
|
Re: Array: Maximale Anzahl nicht festlegen
Also wenn ich eine Textdatei habe, die so aussieht:
Code:
Welche Zahl ist 32bit und welche 64? Kannst du das Unterscheiden? Kann der Computer das Unterscheiden?
Zahl1:3
Zahl2:15 |
Re: Array: Maximale Anzahl nicht festlegen
Wenn du eine reine Textdatei hast, dann ist die Zahl im Text hinterlegt. Dort macht es keinen Unterschied. Es ging aber um typisierte Dateien, dort werden ja Records gespeichert.
So langsam könnte das mal ein eigenes Thema werden... :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 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-2025 by Thomas Breitkreuz