Autor Thema: Fehler bei einer Schleife  (Gelesen 1836 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Fehler bei einer Schleife
« am: 15.03.12 - 15:28:30 »
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

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
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Re: Fehler bei einer Schleife
« Antwort #1 am: 15.03.12 - 15:51:57 »
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

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Fehler bei einer Schleife
« Antwort #2 am: 15.03.12 - 16:08:27 »
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

„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Fehler bei einer Schleife
« Antwort #3 am: 16.03.12 - 09:49:21 »
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)
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Fehler bei einer Schleife
« Antwort #4 am: 19.03.12 - 10:57:45 »
Okay. Danke für die Erklärung Marco!  :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz