Autor Beitrag
[r2d2]
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

WinXP
D5 Enterprise
BeitragVerfasst: Di 28.10.03 03:45 
Hi
Wie kann man den Platz für eine Variable selbst reservieren¿ Normalerweise reserviert den Delphi ja beim Programmstart automatisch, das will ich aber nicht, ich will ihn wärend der laufzeit reservieren. Mir fällt als einzige Lösung ein, eine array-Variable mit variabler Länge zu erstellen, die nimmt ja erst dann Platz ein, wenn ihre Länge festgelegt wird. Es muss aber doch eine bessere Lösung geben.
thx :roll:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 28.10.03 06:10 
Warum willst du das nicht?

Einzige Möglichkeit, die ich sehe, wäre selber einen Speichermanager zu schreiben. Viel Spaß.

Das was du geschrieben hast, gilt übrigens nur für globale Variablen. Da man mit selbigen eh sehr sparsam umgehen sollte, vermeiden wo es nur geht, sehe ich eigentlich kein Problem, dass sie unnötig Speicher brauchen.
Lokale Variablen belegen nur Speicher, wenn das Unterprogramm aufgerufen wird und verschwinden wieder aus ihm, wenn das Unterprogramm verlassen wird.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 28.10.03 09:05 
Für sowas was du meinst verwendet man normalerweise Pointer - ist in der Regel nur sinnvoll wenn man dyn. Speicher allozieren will weil erst zur Laufzeit feststeht wieviel Speicher benötigt wird. Schau dir vielleicht mal mein Pointer-Tutorial auf www.x-spy.net/personal an...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
[r2d2] Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

WinXP
D5 Enterprise
BeitragVerfasst: Di 28.10.03 13:56 
Ich hab ein 500*500*500-Array, von dem aber nur einige wenige Felder Daten enthalten. Selbst wenn alle Felder nur vom Typ Pointer sind, belegen sie ja aber schon Speicher, und zwar nicht zu knapp. Ich will also erreichen, dass nur die Felder Speicherplatz belegen, die auch wirklich Daten enthalten. Mit einem dynamischen Array müsste das doch gehen, oder?
G-man
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Di 28.10.03 17:21 
Also, wenn du ein Problem mit dem Belegen von Speicher hast, kannste das auch mit Assembler lösen. Ist sowieso efektiver.

_________________
...To err is human, but to really foul things up requires a computer.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 28.10.03 17:53 
In deinem Fall würde ich mir einer Verketteten Liste (oder vom nir aus auch einem Dynamischen Array) Abreiten und nur für die Elemente, welche Datensätze anlegen.

Ein Datansatz müsste dan inetwa so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
tMyData=Record
  x, y, z : Word;
  Nutzdaten : String;
end;


Wenn du dann z.B. 5 Solcher Datensätze hast, dan erzeugst du ein DynArray mit 5 Feldern von den oben genanten Typ.

Gruß
Klabautermann