Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
25. Okt 2009
Falls es euch noch interessiert:
Bei der neuen "verbesserten" Datenstruktur hab ich alles hintereinander in einen Array of Pointer reingeschrieben.
Dann hab ich noch ein bisschen rumgetrickst, damit ich an meiner alten Datenstruktur kaum was ändern musste und nicht den kompletten code umändern musste.
Außerdem hatte ja diesen Code geschrieben
procedure overhead;
var i, zeilen, spalten:...
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Vielen Dank an alle!
Hab jetzt ne neue Datenstruktur und es klappt :)
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
habs zu stark vereinfacht :oops:
procedure overhead;
var i, zeilen, spalten: integer;
arr: array of record
cont: Pointer;
strs: array of integer;
end;
begin
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Nochmal verständlich:
procedure overhead;
var i, zeilen, spalten: integer;
arr: array of array of Typ;
begin
zeilen := 32000;
spalten := 25;
SetLength(arr, zeilen);
for i := 0 to zeilen - 1 do begin
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Die 88MB entstehen auch schon ohne dass ich das Array befülle. Das liegt nur am SetLength.
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Ich versteh nicht was du mir damit sagen möchtest :stupid:
Das problem ist halt, sobald ich mehr Reihen/Spalten hab stürzt mein Programm ab mit der Meldung "Nicht genügend Arbeitsspeicher".
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Bleibt mir jetzt nurnoch übrig
a) das 20-fache an Speicher zu brauchen
b) meine Datenstruktur aufzugeben und alles in einen Riesen array of Pointer umzuwandeln?
:cry:
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
stimmt, die rechnung ist wirklich nicht ganz korrekt. ich habs ja auch nur überschlagen. machen wir aus den 3MB 4MB, dann sinds aber immernoch mehr als das 20fache...
die 88MB hab ich so ermittelt:
1) ARR1 befüllen mit daten
2) Taskmanager öffnen, Speicherbedarf abschreiben
3) Knopf mit Funktion SetLength(ARR1, 0) klicken
4) neuer Speicherbedarf (laut Taskmanager) von vorherigem abziehen...
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Kann man nicht irgendwie statische arrays benutzen? sowas wie
procedure unmöglich(count: integer);
var Arr: array of array of integer;
begin
SetLength(Arr, 10000);
...
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Ich hab folgende Datenstruktur:
ARR2 = record
cont: Pointer;
strs: array of integer;
end;
ARR1 = array of ARR2;
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
ist das wirklich so?
ich hatte teilweise schon das problem, dass ich ein dyn Array immer um 1 vergrößern musste. Da hab ich dann immer extra ne zusätzliche Variable verwendet und das array immer stufenweise zb um 10000 vergrößert. Als ich es dann mit dem verglichen hab dass das Array immer nur um 1 vergrößert hab ich keinen geschwindigkeits-unterschied festgestellt und seit dem vergrößer ich...
Forum: Object-Pascal / Delphi-Language
Delphi
by blablab,
24. Okt 2009
Hallo!
Ich hab folgendes Problem: Ich hab eine mehrdimensionales dynamisches Array ungefähr in folgender größenordnung array of array. das äußere array muss wirklich dynamisch sein, die inneren aber eigentlich nicht. deren größe bleibt immer gleich, allerdings weiß ich die größe zur entwicklungszeit noch nicht.
Mein Problem ist nun, dass ich nicht weiß wie die dynamischen arrays bei delphi...