Domino 9 und frühere Versionen > ND8: Entwicklung
ArrayGetIndex liefert nur einen Treffer
Keydins:
Hallo zusammen,
ich bastel mal wieder an der automatisierten Quotenregelung für unsere Mailserver und versuche dort eine Sondersteuerung für ausgewählte User zu implementieren.
Ausgelöst wird das ganze zur Zeit noch über einen Schalter in einer Maske. In dieser Maske werden in einem Feld die User eingetragen, für die eine Sonderegelung gilt und die Quote, die zugünftig gelten soll.
Beispiel
userid001#3072
userid002#2048
userid003#4096
Die ID des Users ist auch gleichzeitig der Dateiname (ohne .nsf) der Maildatenbank. Beim Durchlaufen aller Mail-DB möchte ich prüfen, ob die aktuelle Datenbank einem User in der Sondersteuerung gehört.
Dazu erzeuge ich mir 2 Arrays (1x Typ String, 1x Typ Integer), das erste wird mit den UserIDs gefüllt und das zweite mit der dazugehörigen Quote.
--- Code: ---'Aufbau der beiden Arrays
For sunum = sonderLB To sonderUB
sonderuser(sunum) = Ucase(Strtoken(sonder(sunum),"#",1))
Next
For sunum = sonderLB To sonderUB
sonderquota(sunum) = Strtoken(sonder(sunum),"#",2)
Next
'Sondersteuerung
userid = Ucase(Trim(Strtoken(db.FileName,".",1)))
ipos = Arraygetindex(sonderuser,userid)
If Not (Isnull(ipos)) Then
quotaSizeNew = sonderquota(ipos)
Print "Sonderuser: " & userid & " ---> Quota: " & quotaSizeNew
Else
If quotaSizeNew <= 1024 Then
quotaSizeNew = 1024
Elseif qoutaSizeAkt < quotaSizeNew Then
quotaSizeNew = qoutaSizeAkt
End If
End If
--- Ende Code ---
Das komplette Script läuft sauber durch, aber der Vergleich der jeweiligen UserID mit dem Inhalt des 'sonderuser-Arrays' liefert immer nur einen Treffer für die Indexposition 0, alle weiteren Prüfungen ergeben NULL. Ich habe mir das im Debugger angesehen und selbst wenn die Variable 'userid' den zweiten oder dritten Wert in meiner Userliste annimmt, liefter ArrayGetIndex ein NULL zurück.
Hat jemand ne Idee, woran das liegen könnte? Würde ungern auf eine Schleife zum Durchsuchen des Arrays zurückgreifen.
Gruß
Dirk
ascabg:
Hallo,
Kleine Frage am Rande.
Warum verwendest Du keine Listen?
Und die Arrays sind auch wirklich gefuellt?
Ich frage nur deshalb, weil ich mir aus Deinem Code-Schnipsel nicht erklaeren kann,
woher sonderLB und sonderUB kommen.
Eventuell belegst Du diese ja irgendwo vorher.
Andreas
Keydins:
Hmmm, Gewohnheit? ;D
Aber prinzipiell wäre mir das Konstrukt egal, hauptsache es läuft performant. Kann ich bei ner Liste auch mit nem Index arbeiten?
[update]
Grade mal ein
For sunum = sonderLB To sonderUB
Print sonder(sunum)
Next
in den Code eingebaut und ohne Debuger bekomme ich nur eine Printausgabe, während der Debugger in seinem Ausgabetab die passende Anzahl an Ausgaben und die jeweils korrekten Werte liefert... ???
ascabg:
Da gibt es die ListTags.
--- Code: ---Dim dblSonderSize List As Double
For sunum = sonderLB To sonderUB
dblSonderSize(Ucase(Strtoken(sonder(sunum),"#",1))) = Ucase(Strtoken(sonder(sunum),"#",2))
Next
--- Ende Code ---
Und Zugreifen kannst Du auf die einzelnen Elemente der Liste ueber Ihren ListTag.
z.B.
If db.Size > dblSonderSize("USERID001") Then ...
Code ist nicht geprueft.
Andreas
Keydins:
Ok, dann schau ich mir das mit der Liste nochmal genauer an.
Danke für den Tip.
Gruß
Dirk
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln