Ich habe versucht, dieses Problem selbst zu lösen, aber vielleicht gibt es etwas, das ich über die Funktionsweise von ArrayUnique
missverstehe.
Hier ist etwas Beispiellotusskript-Code:
'Lassen Sie uns einige Daten testen
dateOne = CDat("16.12.2010")
dateTwo = CDat("16.12.2010")
testSuccess = (dateOne = dateTwo)
'Bei der Auswertung ist testSuccess = true
'Jetzt erstellen wir ein Array ...
Dim someArray(1) As Variant
someArray(0) = dateOne
someArray(1) = dateTwo
uniqueArray = ArrayUnique(someArray)
'uniqueArray hat dieselben beiden Elemente ... der Duplikat wurde nicht entfernt
In obigem Beispiel sind dateOne, dateTwo, testSuccess und uniqueArray alle implizit deklarierte Variantvariablen.
Was mache ich falsch? Ich habe in der Hilfe gelesen, wo es heißt:
Verwendung
Elemente in einem Variantenarray werden nur dann als gleich betrachtet, wenn sie vom gleichen Typ sind. Das Variantenarray kann keine Klassen oder Objekte enthalten.
Arrayelemente, die den Nullwert enthalten, werden mit anderen Nullwerten übereinstimmen.
Arrayelemente, die leer sind, werden mit anderen leeren Elementen übereinstimmen.
Nun, das Variantenarray in diesem Beispiel enthält Variantvariablen, die vom Typ Datum/Uhrzeit sind. Also, wenn ich das richtig lese, mache ich nichts falsch.
Bearbeiten: Auf den Notes-Foren hat Benutzer Thoams Kennedy Folgendes versucht:
Wenn Sie die Uhrzeit-Komponente so ausschreiben
dateOne = CDat("16.12.2010 04:20:17 AM")
dateTwo = CDat("16.12.2010 04:20:17 AM")
werden sie immer noch als unterschiedlich behandelt. Es scheint keine Millisekunden-Komponente zu geben, also würde ich sagen, dass ArrayUnique nicht weiß, wie man mit DateTime-Varianten umgeht.
Also laut seiner Schlussfolgerung funktioniert ArrayUnique ähm, nicht.
3 Stimmen
Also warte mal, in Notes deklarierst du ein Array der Größe 2 mit
Dim someArray(1)
? Bekommst du also alle Nachteile von 0-basierten Arrays kombiniert mit allen Nachteilen von 1-basierten Arrays? AHAHAHAHAHAHAHAHAHAHAHA0 Stimmen
@BlueRaja: Warum lachst du über meinen Schmerz? ;-)
1 Stimmen
Eigentlich ist das syntaktischer Zucker für
Dim someArray(0 To 1)
mit dem weggelassenen unteren Grenze. Was Sie dimensionieren, ist die obere Begrenzung des Arrays (unter der Annahme von Null als untere Grenze), nicht seine Länge.