Domino 9 und frühere Versionen > ND8: Entwicklung
Fehler bei einer Schleife
(1/1)
Klafu:
Hallo zusammen,
ich hab folgendes Script
Kurzfassung:
--- Code: ---
Dim Enddatum As NotesDateTime
Dim EndDateTimeA(49) As Variant
RepeatDateTime = doc.RepeatInstanceDates(0)
Datum = Left(RepeatDateTime, 10)
ende = TimeNumber(20,00,00)
Set Enddatum = New NotesDateTime (Datum + " " + ende)
ForAll z In EndDateTimeA
Set z = Enddatum
Call Enddatum.Adjustyear(1)
End ForAll
--- Ende Code ---
Vermutlich total bekloppt was ich wiedermal mache, aber in das Array EndDateTimeA schreibt er mir nun 50 mal den selben Eintrag.
Er geht zwar alle einzeln und Schritt für Schritt durch und zählt auch die Jahre hoch, aber er schreibt das neue Enddatum in jedes der 0-49 Teile des Arrays.
Was mach ich falsch?
Gruß Chris
Werner Götz:
Hallo Chris,
durch das "Set z = Enddatum" hast Du 50 Referenzen auf das selbe Objekt.
Wenn sich das Objekt ändert, sieht das in allen Referenzen gleich aus.
Du müsstest also innerhalb der Schleife neue Objekte auf Basis von Enddatum anlegen.
Oder aber in das Array nur die LSLocalTime schreiben: "x = Enddatum.LSLocalTime".
Viele Grüße
-Werner
Klafu:
Ich hab es aber auch schon mit einer anderen Schleife probiert
ArrayNr = 0
Do Until ArrayNr = "50"
Set EndDateTimeA(ArrayNr) = Enddatum
ArrayNr = ArrayNr +1
Call Enddatum.Adjustyear(1)
Loop
Das hatte das selbe Ergebnis. Fehlt hier auch die richtige Referenz?
Und mit LSLocalTime ... :o ... es.... sieht aus wie es soll!
Schonmal dafür vielen Dank, Werner!! :D
Chris
marschul:
Du hast die gleichen Probleme nur in eine andere Verpackung (Schleife) gelegt.
Das Set EndDateTimeA(ArrayNr) = Enddatum ist, wie Werner schreibt, das Setzen auf eine Referenz, die in jeder Wiederholung zwar geändert wird, da es aber nur eine Referenz ist, zieht diese Änderung in alle Werte Deines Arrays.
Wenn Du tatsächlich NotesDateTime-Objekte in das Array packen willst, musst Du diese jeweils als eigenständige Objekte behandeln, z.B.
Set EndDateTimeA(ArrayNr) = New NotesDateTime(Enddatum.DateOnly)
Klafu:
Okay. Danke für die Erklärung Marco! :)
Chris
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln