Zitat von
Codix32:
Zitat von
Uwe Raabe:
Schau mal auf diese Zeile:
TagArray[i].Werktag:=Tagarray[i-1].Werktag + Weekend(TagArray,i); // Zählt die Werktage (var Byte)
Für i = 0 greifst du knapp vor das Array! Range-Check einschalten, bitte!
Ja, hm, ich kriege es nicht anders hin, Uwe. Dabei ist 'i' sogar eine Variable vom Typ Word und die geht doch eigentlich von 0 bis +... aber nicht, wie bei Integer -3-2-1 0 1 2 3.
Aber auch wenn ich 'i' als Integervariable declariere, ist der Fehler da.
Das hat mit dem Typ von i gar nichts zu tun. Tagarray[i-1] liefert für i=0 halt irgendetwas unbrauchbares, da es Tagarray[-1] gar nicht gibt. Ein eingeschalteter Range-Check (siehe Compiler Optionen) hätte dir das gleich gesagt.
Lösung:
Delphi-Quellcode:
if I = 0 then
TagArray[i].Werktag := Weekend(TagArray,i)
else
TagArray[i].Werktag := Tagarray[i-1].Werktag + Weekend(TagArray,i); // Zählt die Werktage (var Byte)