Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
4. Jan 2005
Hm, maximov ich fürchte du hast Recht :?
Das hab ich nicht bedacht. Man müsste noch eine Möglichkeit finden, dem Programm zur Laufzeut die Größe einer Dimension mitzuteilen. Aber das wäre zuviel des Gefrickels ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
3. Jan 2005
OK, dann halt mit Codebeispielen:
So deklarierst du dein Array:
a: Array of Array of Integer;
Mittels GetMem reservierst du für dieses Array dann Speicher. Wenn du es vergrößern willst, reservierst du neuen Speicher in der entsprechenden Größe, verschiebst alle Daten in diesen Speicherbereich und gibts den alten via FreeMem frei. Letztendlich hast du so die Speicherverwaltung eines...
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
3. Jan 2005
Strings sind ja auch eindimensioanle Arrays. Bei denen funktioniert das mit meiner Methode ja auch wunderbar. Warum das bei mehrdimensionalen nicht geht, hab ich weiter oben geschrieben.
Einen Vorschlag hätt ich allerdings: Benutz statische Arrays, schalte die Bereichsüberprüfung ab und verwalte den Speicher selbst. Dann kannst du ganz leicht streamen, da statische Arrays einen...
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
3. Jan 2005
Dein Code funktioniert schon, nur macht er nicht das was du willst: Er speichert nämlich einfach die Adressen der Speicherbereiche, die deine Integer-Zahlen enthalten.
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
2. Jan 2005
Dynamische Arrays sind erstmal Zeiger. Ein 10 mal 10 Array ist also eine Liste von 10 Zeigern auf andere Speicherbereche. Du hast keinen zusammengehörigen Speicherbereich, deshalb musst du alles auf eindimensionale Arrays zurückführen und die einzeln abspeichern.
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
22. Dez 2004
Du musst deinen Code nur minimal abändern:
var
A : array of double ;
begin
FS := TFileStream.Create(txtfilename.text,fmCreate);
try
FS.Write (A, length(A) * sizeof(A) ;
finally
FS.free ;