Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Thomas Schulte am 30.09.04 - 16:42:13
-
Hat das irgendeiner von euch schon einmal gemacht?
Irgendwie krieg ich das nicht hin. Bei
Redim Preserve Feldname(i,1) as string
meckert er schon beim Abspeichern das er einen Script Error findet und zwar sagt er "Wrong Number of Array subscripts"
Hab ich glatt vergessen, eine Suche im Notes.net 4+5 sowie 6 Forum fördert da nichts zielführendes zu Tage
Version: 6.5.1, Designer Client
-
Was macht er, wenn Du statt i eine Integerzahl direkt reinschreibst (z.B. 5) ?
Nur so zum eingrenzen....
-
Du kannst bei mehrdimensionalen Arrays nur die Obergrenze der letzten Dimension ändern.
Glaube ich.
-
Du glaubst richtig, Thomas V.
Ich kann allerdings nicht nachvollziehen, dass der Compiler schon meckert - bei mir ergibt das erst einen run-time error.
Thomas S.: Was meinst Du eigentlich mit Feldname ?
Bernhard
-
Arrays can have up to 8 dimensions. The first ReDim statement for an array sets the number of dimensions for the array. Subsequent ReDim statements for the array can change the upper and lower bounds for each dimension, but not the number of dimensions.
If Preserve is specified, you can change only the upper bound of the last array dimension. Attempting to change any other bound results in an error.
Das bestätigt die Aussage von Thomas V.
-
@bernhard
Der interne Name des Arrays und warum er beim Coplien schon gemeckert hat kann ich jetzt auch nicht mehr nachvollziehen /*Wundert sich*/
@all
Nach ein wenig experimentieren:
Das hier geht nicht da fliegt er mit einem Subscript out of Range auf die Nase
Dim SplitFieldArray() As String
Dim i As Integer
Dim j As Integer
I = 50
Redim SplitfieldArray(i,1) As String
For i = 0 To 40
splitfieldArray(i,0) = "feld_1 " + Cstr(i)
splitfieldArray(i,1) = "feld_2 " + Cstr(i)
Next
Redim Preserve SplitfieldArray(i,1) As String
und zwar egal ob i größer oder kleiner oder sonst irgendwas ist.
Wohingegen das hier:
Dim SplitFieldArray() As String
Dim i As Integer
Dim j As Integer
I = 50
Redim SplitfieldArray(i,1) As String
For i = 0 To 40
splitfieldArray(i,0) = "feld_1 " + Cstr(i)
splitfieldArray(i,1) = "feld_2 " + Cstr(i)
Next
Redim Preserve SplitfieldArray(50,0) As String
Ohne Probleme rauf und runter funkioniert.
Also, Thomas hat recht, wenn man mit mehrdimensionalen Arrays arbeitet, dann kann man immer nur die letzte Dimension ändern, die allerdings rauf wie runter.
Das bedeutet dann fürs Programmieren, das man erst einmal die Anzahl der ersten Dimensionen eines Arrays ermitteln muss und anschließend das Array zweckbestimmt exakt dimensionieren sollte.
Thomas
-
Naja, das steht ja auch genauso in der DesignerHelp (der Text ist sogar in R5 und R6 gleich) - siehe das Zitat von Matthias.
Bernhard
-
Stimmt wer lesen kann ist klar im Vorteil.
Irgendwie war ich jetzt glaube ich auf eine andere Sprache geeicht. deswegen hab ich in der Online Hilfe erst garnicht nachgelesen. Jaja, die Basics. ::)
Thomas
-
Wenn sowas einem guten Programmierer (wie Dir) nicht mehr passiert, ist er tot.
Schlechten Porgrammierern wird das wohl auch noch nach dem Ableben passieren ;D
Bernhard