Autor Beitrag
Janoschka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 23.08.02 14:38 
Kann es sein, dass es eine Maximale Länge für Strings gibt?
wenn ja - was ist die maximale größe und wie kann ich sie umgehen bzw. vergrößern?
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.08.02 15:20 
Delphi starten,
String eintippen und den Cursor drauf,
F1 drücken,
Hilfe lesen ...
... und nachdenken :-)
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Fr 23.08.02 19:01 
TurboPascal, Strings. short Strings sind 255 Zeichen lang,
long/huge Strings für Win9x Systeme sind maximal 2GB, bei NT sind sie normalerweise 2TB, können aber auch nur 4GB groß sein.

Die maximale Stringlänge ist der maximal, "en Block", addressierbare Speicherbereich, grob gesagt. Daher können Win95 Systeme auch keine Dateien größer 2GB erstellen, NT packt dagegen, laut Dokumentation, 2TB Dateien. Die Länge eines Strings zu vergrößern ist daher auch nicht sinnvoll, was nützt es mir wenn ich 4GB im Speicher hätte, jedoch nur 2GB Dateien schrieben kann?

SMI
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: So 25.08.02 02:33 
Bei so großen Datenmengen wäre es wohl sinnvoller, einen TMemoryStream zu verwenden, glaub ich jedenfalls.

Bis dann
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: So 25.08.02 03:13 
Bei größeren Datenmengen ist der Umweg über die Festplatte an schnellsten und effektivsten. Mit dem API Befehlen ReadFileEx und WriteFileEx kann man gezielt Positionen anspingen und diese dann in den Buffer lesen, also man brauch nicht erst die ganze Datei in den Speicher zu verfrachten, wenn man schon im vorhinein weiß, das bei einer 2GB Datei an Position "100 MB" 2MB gelesen werden müssen. Somit spart man Speicher, schont die Swapdatei und somit auch die Festplatte(n). Ist zwar etwas umständlich, da man keine formschön verpackten Klassen hat und erforder einen exakten Datei-Header, aber zahlt sich bei der Performance erheblich aus. Bevor von den 400 MB, die ich in den Speicher geladen habe eh 200 MB in der Swapdatei landen, kann ich gleich eine 400 MB Datei auf die Platte schreiben und nur meinetwegen die 8MB an denen ich wirklich schaffe im Speicher haben wodruch das Zeitaufwendige swapen total entfällt.


SMI