![]() |
Prüfung ob Wochentag in der Zeit vorhanden
Hallo liebe Delphi-PRAXIS'ler,
ich habe ein Problem wo ich einfach nicht hintersteige:
Code:
Das Problem ist, dass sich das Programm aufhängt und nichts tut :!:
repeat
incDay(Tag); if DayOfWeek(Tag)=6 then Tage.Items.Add(Datetostr(Tag)); until Tag=Now; Zur Erklärung: Tag:TDateTime; Tage: TCheckListBox; Liebe Grüße loirad |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Die Wahrscheinlichkeit, dass Tag=Now zutrifft, ist sehr gering. Dafür müsstest du exakt die richtige Millisekunde erwischen. ==>
![]() mfg Christian |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Das Programm tut schon etwas. Es läuft immer weiter in der Schleife ;-)
Abgesehen davon, dass man nicht sieht, was Du "Tag" zuvor zugewiesen hast, solltest Du auf Tag >= Now prüfen. TDateTime ist außerdem ein Realwert. Im ganzzahligen Teil ist der Tag und in den Nachkommastellen die Uhrzeit gespeichert. Vielleicht ist es grundsätzlich sinnvoller, direkt mit TDate zu arbeiten. |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Vielen Dank für die Tipps!!!
Leider funktioniert es immernoch nicht. Anbei der gesamte Quelltext:
Code:
Das einlesen ist eleganter zu lösen - ich weiß, aber es tut hier seinen Zweck :!:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CheckLst,DateUtils; type TForm1 = class(TForm) Tage: TCheckListBox; Einlesen: TMemo; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TageClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Tage.Items.SaveToFile('Tage.txt'); Einlesen.Clear; Einlesen.Lines.Add(Datetostr(Now)); Einlesen.Lines.SaveToFile('Tag.txt'); end; procedure TForm1.TageClick(Sender: TObject); begin Tage.Items.Delete(Tage.ItemIndex); end; procedure TForm1.FormCreate(Sender: TObject); var i:integer;Tag:TDate; begin Einlesen.Lines.LoadFromFile('Tag.txt'); Tage.Items.LoadFromFile('Tage.txt'); for i:=0 to Tage.Items.Count-1 do if Tage.Items.Strings[i]='' then Tage.Items.Delete(i); Tag:=strtoDate(Einlesen.Lines[0]); repeat incDay(Tag); if DayOfWeek(Tag)=6 then Tage.Items.Add(Datetostr(Tag)); until Tag>=Now; end; end. |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Delphi-Quellcode:
Die Schleife solltest Du rückwärts laufen lassen, da Du sonst 2 aufeinander folgende Leerzeilen nicht erkennst.
for i:=0 to Tage.Items.Count-1 do
if Tage.Items.Strings[i]='' then Tage.Items.Delete(i); Ansonsten: Was funktioniert denn nicht? Setze mal einen Haltepunkt, debugge schrittweise und untersuche Deine Variablen. Das sollte helfen... |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Hinweis gleich eingearbeitet!
Für Now bekomme ich beim debuggen nur:"Nicht verfügbarer Wert" und für Tag nur so eine komische Zahl (vermutlich integer Wert für das Datum)! Sonst fällt mir nichts auf :pale: |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Welches Delphi hast Du?
Kannst Du bei den Überwachten Ausdrücken "Funktionen zulassen"? Dann wird die Funktion ausgeführt und das Ergebnis im Debuger angetzeigt. Ansonsten nutze eine lokale Variable, der Du "Now" zuweist. Die Variable lässt sich dann auf jeden Fall auslesen. |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Tag:= IncDay(Tag);
|
AW: Prüfung ob Wochentag in der Zeit vorhanden
Hi,
der Variablename "tag" ist ziemlich unglücklich da TComponent."tag" bereits vergeben ist. Ggf. löst das schon Dein Problem, ansonsten schau Dir folgendes mal an (schon auf Deinen Code modifiziert, die until-Anweisung hat hier nicht wirklich einen Sinn....):
Delphi-Quellcode:
Gruß Darlo
var
startDate, myIncDate: TDate; i: integer; begin //Finde das Datum des nächsten Sonntags i := 1; startDate := now; repeat myIncDate := incDay(startDate,i); if DayOfWeek(myIncDate) = 7 then showmessage('Nächster Sonntag am: '+Datetostr(myIncDate+1)); i := i+1; until (DayOfWeek(myIncDate)=DayOfWeek(Now)); |
AW: Prüfung ob Wochentag in der Zeit vorhanden
Zitat:
Hast ja bereits die Antwort gegeben gehabt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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 by Thomas Breitkreuz