Discussion:
Re-dimensionierung von array ?
(zu alt für eine Antwort)
Silenus paparias
2010-04-30 11:56:33 UTC
Permalink
Hallo.

Ein Array (listarray) soll genau so viele zeilen erhalten als die
selektierten saetze aus eine Listbox.
Dazu habe ich foldende code geschrieben:

y=1
FOR i=1 TO thisform.list1.ListCount
IF thisform.list1.Selected(i)=.t.
DIMENSION listarray(y)
listarray(y)=thisform.list1.List(i)
y=y+1
ENDIF
endfor

Die Dimension des listarrays bleibt auf "1" egal wieviele saetze ich
aufwaehle

Hat jemand eine idee warum der obige code nicht funktioniert?

Danke im voraus.
Olaf Doschke
2010-04-30 13:28:13 UTC
Permalink
Hallo Silenius,

y=1
Dimension somearray(y)
somearray(y)='a'
y=y+1
Dimension somearray(y)
somearray(y)='b'
y=y+1
?somearray(1), somearray(2)

Sieht soweit okay aus, aber an welcher Stelle kannst Du z.B. auf das 2.
Element nicht mehr zugreifen, welcher Fehler kommt?

Gültigkeitsbereich des Arrays? LOCAL, PUBLIC, PRIVATE? Weil Du es erst
mittels DIMENSION erzeugst wohl PRIVATE. Du wirst u.U. das Array einfach an
der Stelle, wo Du darauf zugreifen willst nicht mehr haben. Wenn es z.B. als
Rückgabe einer aufrufenden Methode gedacht ist, muß es auch vorab schon
PRIVATE oder besser als Objekt/Eigenschaft existieren.

Beschäftige Dich mal mit Gültigkeit von Variablen (variable scope), das
Thema müßte ich Dir auch schonmal empfohlen haben, es ist wichtig, sich
damit auszukennen, nicht optional.
Themen LOCAL, PUBLIC, PRIVATE.

Tschüß, Olaf.
Silenus paparias
2010-05-03 05:53:44 UTC
Permalink
Hallo Olaf,

Habe nachgeschaut..

Das array war an einer anfagsstelle als public definiert gewesen.
Nach entfernen klapp die redimensionierung wieder(brauche es nur
local)

Danke.

Loading...