Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: DAU-in am 21.08.06 - 10:04:58

Titel: Array subscript out of Range
Beitrag von: DAU-in am 21.08.06 - 10:04:58
ich frage die Rollen des aktuellen Users ab, und möchte dann die [ und ] von den Rollen entfernen. Die erste Replace-Zeile wird abgearbeitet, im Debugger steht auch alles richtig drin, bei der 2. kommt die Fehlermeldung: Array subscript out of Range
Es sind gerade 34 Rollen, die er ausliest.
Version ist 7.0.1
Was mache ich falsch bzw. was denke ich gerade falsch?

      
Set acl_Current = db_current.ACL
Set acl_entry    = acl_Current.GetEntry(session.UserName)
var_Roles         = acl_Entry.Roles   
   
var_Roles = Replace(var_Roles, "[", "")
var_Roles = Replace(var_Roles, "]", "")
Titel: Re: Array subscript out of Range
Beitrag von: botschi am 21.08.06 - 10:10:00
Du musst das Array "hochzählen". Woher weiss das Array denn beim zweiten Durchlauf, welcher Teil des Arrays gelöscht werden soll?
Titel: Re: Array subscript out of Range
Beitrag von: DAU-in am 21.08.06 - 10:22:30
wenn ich die NotesHilfe richtig interpretiere:
Return value
Replace returns an Array of type String that contains sourceArray, where any values in replaceArray have been replaced by the corresponding values in replacementArray.   
Usage
Replace searches the String in sourceArray for the String in replaceArray. If a match is found, the substring is replaced with a corresponding substring from replacementArray. Each String in replaceArray is scanned against each String in sourceArray as modified by prior substitutions. Replace is case sensitive.

im ersten Durchgang wird mein var_Roles verändert, und dient im 2. Durchlauf als Ausgang. Eigentlich sollte das in der 2. Zeile dann doch genauso durchlaufen wie in der ersten?

Ich habe es gerade mit 7 Werten versucht, die aus einem Feld eingelesen wurden, da hat das ganze prima funktioniert.
Es muss irgendwas mit der Anzahl der Einträge zu tun haben, aber was?
Titel: Re: Array subscript out of Range
Beitrag von: klaussal am 21.08.06 - 10:27:19
Wäre mal einen Versuch wert :

var_Roles2 = Replace(var_Roles, "]", "")
Titel: Re: Array subscript out of Range
Beitrag von: DAU-in am 21.08.06 - 10:37:22
mit var_Roles2 bekomme ich 'wrong number of Array subscripts'
Titel: Re: Array subscript out of Range
Beitrag von: Glombi am 21.08.06 - 10:47:14
So:

Dim  replacementArray(0 To 1) As String
   replacementArray(0) = "["
   replacementArray(1) = "]"
   
   Set acl_Current = db_current.ACL
   Set acl_entry    = acl_Current.GetEntry(session.UserName)
   var_Roles         = acl_Entry.Roles   
   var_Roles = Replace(var_Roles, replacementArray, "")


Andreas
Titel: Re: Array subscript out of Range
Beitrag von: DAU-in am 21.08.06 - 10:55:45
Danke, Glombi, es funzt!

Aber warum hat meine Formel bei den Werten aus dem Feld funktioniert, und bei den Rollen dann nicht mehr??