Domino 9 und frühere Versionen > ND8: Entwicklung

ArrayGetIndex liefert nur einen Treffer

(1/2) > >>

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