![]() |
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Schau mal auf diese Zeile:
Delphi-Quellcode:
Für i = 0 greifst du knapp vor das Array! Range-Check einschalten, bitte!
TagArray[i].Werktag:=Tagarray[i-1].Werktag + Weekend(TagArray,i); // Zählt die Werktage (var Byte)
|
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Zitat:
Aber auch wenn ich 'i' als Integervariable declariere, ist der Fehler da. Achja, da ist ja noch 'setlength(TagArray,tg)' Was meinst Du mit Range-Check? |
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Zitat:
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) |
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Zitat:
habe schon früher mal bemerkt, daß bestimmte Variablen, die nicht auf null gesetzt wurden, merkwürdige Werte ausgegeben haben. Ich habe das Dingens hier so gelöst:
Delphi-Quellcode:
procedure TForm1.Run(Datum:TDateTime);
var i,idx: byte; tg:integer; begin //<-proc tg:=TageinMonat(datum); Form1.Caption:=NamendesMonats(Now)+' '+inttostr(CurrentYear); Label1.Caption:=' Der Monat hat '+inttostr(tg)+' Tage'; idx:=0; FTArray:=GetHolidayTable(YearOf(Datum)); setlength(TagArray,tg); for i:= 0 to tg-1 do begin //<-for inc(idx); TagArray[i].TNum:=i+1; TagArray[i].abwBegin:= ''; TagArray[i].abwEnde:= ''; TagArray[0].Werktag:= 0; //<- Für mich immer noch unlogisch, da '0' größer ist als '-1' //<- aber jetzt funktioniert jetzt if LblFeiertag(i+1,monthOf(Datum),FTArray)<>'' then... ... ... end; |
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Hallo,
dein Tag[i].Werktag:= Tag[i-1].Werktag+ XXX ist ja das Grundproblem. Klappt immer, bis auf i=0 ;) Lösung 1: eigene Summenvariable nehmen
Delphi-Quellcode:
Lösung2:
var
SumWerktag: Integer; begin SumWerktag:= 0; for Tag[i].Werktag:= SumWerktag+ XXX SumWerktag:= Tag[i].Werktag // für den nächsten Tag Direkt ein Tag-Record als Zwischensummen-Halter. Dann muss nicht für WerkTag, Feiertag usw. ja eine Variable benutzt werden. Beides hat den Vorteil, dass man das auch besser Debuggen kann. Und da fällt mir dann auch noch bei SumWerktag+Weekend(TagArray,i); // Den Aufruf in eine lokale Variable, auch besser zu Debuggen. Heiko |
Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals
Zitat:
werde ich mal ausprobieren. Das macht meinen SpaghettiCode übersichtlicher ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz