Autor | Thema: Mehrdimensionale Arrays | | Datum:25.07.01 20:47 
(NSp_ware@t-online.de) | |
Hallo Roland,
ich habe jetzt an einer Anwendung programmiert, in der ich viel mit den mehrdimensionalen Arrays arbeite. So weit, so gut.
Doch nun habe ich den Punkt erreicht, an dem mir das Neudimensionieren fehlt, d.h. ich dimensioniere neu, erhalte dadurch aber verlorenen Speicher. Es wäre auch gut, wenn man ein Array löschen könnte, um den belegten Speicher wieder frei zu bekommen. Letzters ist ja eh der 1. Bestandteil eines ordnungsgemäßen Neudimensionierens.
Siehst Du eine Möglichkeit, da etwas nachzubessern ?
Gruß
Norbert
|
| | Datum:26.07.01 16:44 
(galaxy@mrk-soft.de) | |
Hi,
zum einem:
Ein Array wird NUR einmal am PRG-Anfang
Declariert, dann steht es Lokal dem gesammten
Programm zur verfügung.
Zum zweiten gibt es CLEAR array[], womit
sich ein komplettes, auch mehrdimensionales
Array komplett löschen lässt. (Profan 7.0)
bsp:
'Programm start
DECLARE array%[300,2]
array%[0,0] = 99
WhileLoop 100
array%[&loop,0] = rnd(49)
array%[&loop,1] = &loop /2
Wend
'inregwo im programm
CLEAR array%[]
'alle werte im array werden gelöscht
|
| | Datum: 27.07.01 20:04 
(NSp_ware@t-online.de) | |
>Ein Array wird NUR einmal am PRG-Anfang
>Declariert, dann steht es Lokal dem gesammten
>Programm zur verfügung.
- (heiß oben besser Global und nicht Lokal)
Genau da setzt ja mein Vorschlag(Wunsch) an. Aber darum ist es wahrscheinlich nicht leicht für Roland, ein Redimensionieren zu installieren.
>Zum zweiten gibt es CLEAR array[], womit
>sich ein komplettes, auch mehrdimensionales
>Array komplett löschen lässt. (Profan 7.0)
CLEAR löscht nicht das gesamte Array, sondern nur dessen Werteinhalt. D.h., der Speicher wird nicht freigegeben. Und danach kann die Elementeanzahl des Arrays nicht verändert werden.
Die Dimensionierung des Arrays, also die Festlegung der Anzahl der Feldelemete kann mit der bisherigen Lösung nicht den Laufzeiterfordernissen angepaßt werden, was ich mir aber eben wünsche.
Eine Lösung des Redimensionierens im Hauptprogamm bringt uns auch nicht viel weiter. Bei einer sagen wir eimal 3000-Zeilen Anwendung befindet man sich in einer Prozedur, wenn ein Killen mit einem evtl. neuen Dimensionieren des Arrays notwendig wird.
Bei den Bereichen geht es ja auch. Da kann innerhalb einer Prozedur Speicher dafür belegt und wieder freigegeben werden, obwohl die Bereichsvariable global für das ganze Programm declariert wurde.
Nun sagen die alten Hasen unter den Profanern sicher, dann nimm doch die Bereiche dafür.
Aber die Arrays sind eben komfortabler, bzw. sollten es sein.
Ich finde Profan² würde die Erweiterung der Array-Funktionalität als prozedurale Programmiersprache nicht schlecht zu Gesicht stehen.
Gruß
Norbert
|
|
|