![]() |
Rückgabedatum in Delphi 7
Hi,
wir haben ein Bibliotheksprogramm geschrieben, in dem ausgeliehene Bücher gespeichert werden. Wenn das ausgeliehene Datum überschritten ist, dann sollte normalerweise eine message kommen "Ausleihdatum überschritten". Folgenden Quelltext haben wir bis jetzt:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject); var lIx : integer; lInt : TDateTime; Ueberschritten : Boolean; begin if FileExists ('Bücherliste3.txt') then ListBox3.Items.LoadFromFile('Bücherliste3.txt'); for lIx := 0 to ListBox3.Items.Count-1 do begin lInt := StrToDateTimeDef(ListBox3.Items.Strings[lIx], 0); if lInt<Now then Ueberschritten:=True; end; if Ueberschritten=True Then ShowMessage('Ausleihdatum überschritten'); end; jetzt kommt aber immer eine message, egal ob überschritten oder nicht. Bitte helft uns. MfG |
Re: Rückgabedatum in Delphi 7
Steht in der Datei das Ausleihdatum? Dann wird es wahrscheinlich immer in der Vergangenheit liegen, die Bedingung trifft also immer zu. Ansonsten würde ich das auch etwas anders schreiben.
Delphi-Quellcode:
[edit] Blödsinn! So ist es besser:
procedure TForm1.FormCreate(Sender: TObject);
var lIx : integer; lInt : TDateTime; Ueberschritten : Boolean; begin if FileExists ('Bücherliste3.txt') then ListBox3.Items.LoadFromFile('Bücherliste3.txt'); for lIx := 0 to ListBox3.Items.Count-1 do begin lInt := StrToDateTimeDef(ListBox3.Items.Strings[lIx], 0); //lass Dir mal lInt ausgeben Ueberschritten:=lInt<Now; end; if Ueberschritten Then ShowMessage('Ausleihdatum überschritten'); end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var lIx : integer; lInt : TDateTime; Ueberschritten : Boolean; begin if FileExists ('Bücherliste3.txt') then ListBox3.Items.LoadFromFile('Bücherliste3.txt'); for lIx := 0 to ListBox3.Items.Count-1 do begin lInt := StrToDateTimeDef(ListBox3.Items.Strings[lIx], 0); //lass Dir mal lInt ausgeben Ueberschritten:=lInt<Now; if Ueberschritten Then ShowMessage('Ausleihdatum überschritten: ' + ListBox3.Items[lIx]); end; end; |
Re: Rückgabedatum in Delphi 7
Moin, Moin,
entscheidend ist doch die Frage, welches Datum lInt beinhaltet. Wenn es das Ausleihdatum ist, dann müsste der Vergleich m.E. die maximale Ausleihdauer berücksichtigen. Also in PseudoCode etwa so:
Delphi-Quellcode:
if Ausleihdatum+Ausleihfrist>Now then Überschritten
|
Re: Rückgabedatum in Delphi 7
Deshalb ja meine erste Frage ;)
|
Re: Rückgabedatum in Delphi 7
Delphi-Quellcode:
Wir haben deine Ideen mit eingefügt, jedoch wird die message trotzdem ausgegeben, auch wenn das Datum nicht überschritten ist.
procedure TForm1.FormCreate(Sender: TObject);
var i : integer; alt : TDateTime; Ueberschritten : Boolean; if FileExists ('Bücherliste3.txt') // siehe oben then ListBox3.Items.LoadFromFile('Bücherliste3.txt'); // siehe oben for i := 0 to ListBox3.Items.Count-1 do begin // überprüfen der ListBox von Anfang bis Ende alt := StrToDateTimeDef(ListBox3.Items.Strings[i], 0); // altes Datum egibt sich aus dem Datum der ListBox3 Ueberschritten:=alt<Now // wenn altes Datum kleiner als aktuelles, dann ergibt sich Überschritten aus true end; if Ueberschritten Then ShowMessage('Ausleihdatum überschritten'); // wenn sich Überschritten aus true ergibt, dann wird Message ausgegeben end; Die letzte Zeile konnten wir nicht übernehemen, da dann ein Fehler entstehet und das Programm abstürzt. MfG |
Re: Rückgabedatum in Delphi 7
Stell doch mal die Textdatei hier online.
|
Re: Rückgabedatum in Delphi 7
Cooky, du musst DeddyH (und mir) erst mal die grundsätzliche Frage beantworten, WELCHES Datum mit lInt ausgelesen wird - solange das nicht bekannt ist, können wir hier bis zum St. Nimmerleinstag rätseln :-D
|
Re: Rückgabedatum in Delphi 7
Das Format der Einträge wäre auch noch gut zu wissen. Sollte es ungültig sein, käme bei StrToDateTimeDef(Eintrag,0) nämlich 0 heraus :mrgreen: .
|
Re: Rückgabedatum in Delphi 7
Ja, mein Verdachte ist das in der Datei das Datum nicht richtig drin gesteht, und so StrToDateDef 0 zurücggibt, und da 0 < now hätten wir das übel :D
Aber nur ne spekulation [EDIT] ROTER KASTEN AHH |
Re: Rückgabedatum in Delphi 7
gut dann werd ich das jetzt mal ein bisschen ausführlicher erklären :-D
also wenn man auf einen Button klickt dann wird in die ListBox3 das Rückgabedatum eingefügt:
Delphi-Quellcode:
wenn das Programm beendet wird, dann wird der Inhalt der ListBox in einer Textdatei eingefügt also da steht dann einfach nur das Datum drin (ich weiß aber nicht in welchem Format)
procedure TForm1.Button1Click(Sender: TObject);
begin ListBox3.Items.Add(FormatDateTime('ddd d. mmm. yyyy', Now+28 end;
Delphi-Quellcode:
und wenn dann das Programm gespeichert wird, wird der Inhalt der Liste wieder geladen und das Programm soll jede Zeile durchgehen und überprüfen, welches Datum davon überschritten ist und dann soll die Message 'Ausleihdatum überschritten' ausgegeben werden (aber nur einmal nicht 10 mal wenn 10 Daten überschritten sind) und dann sollten die überschrittenen möglichst noch rot unterlegt werden, aber da wissen wir auch nicht wie das geht.
procedure TForm1.Button3Click(Sender: TObject);
begin close; ListBox3.Items.SaveToFile('Bücherliste3.txt'); end;
Delphi-Quellcode:
Wir hoffen damit könnt ihr jetzt was anfangen, weil mehr wissen wir auch nich dazu also welche formate das sind und so. Sind da leider nicht so bewandert. :-D
procedure TForm1.FormCreate(Sender: TObject);
var i : integer; alt : TDateTime; Ueberschritten : Boolean; begin if FileExists ('Bücherliste3.txt') then ListBox3.Items.LoadFromFile('Bücherliste3.txt'); for i := 0 to ListBox3.Items.Count-1 do begin alt := StrToDateTimeDef(ListBox3.Items.Strings[i], 0); Ueberschritten:=alt<Now end; if Ueberschritten Then ShowMessage('Ausleihdatum überschritten'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 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