Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#13

Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals

  Alt 4. Nov 2009, 17:47
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)
Uwe Raabe
  Mit Zitat antworten Zitat