AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabedatum in Delphi 7

Offene Frage von "coocky"
Ein Thema von coocky · begonnen am 29. Feb 2008 · letzter Beitrag vom 29. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
coocky

Registriert seit: 29. Feb 2008
6 Beiträge
 
#1

Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 09:39
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 09:45
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:
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;
[edit] Blödsinn! So ist es besser:
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 09:59
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:
if Ausleihdatum+Ausleihfrist>Now then Überschritten
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:05
Deshalb ja meine erste Frage
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
coocky

Registriert seit: 29. Feb 2008
6 Beiträge
 
#5

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:08
Delphi-Quellcode:
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;
Wir haben deine Ideen mit eingefügt, jedoch wird die message trotzdem ausgegeben, auch wenn das Datum nicht überschritten ist.
Die letzte Zeile konnten wir nicht übernehemen, da dann ein Fehler entstehet und das Programm abstürzt.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:12
Stell doch mal die Textdatei hier online.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:28
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
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:31
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 .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Thorben_Ko

Registriert seit: 8. Jun 2007
86 Beiträge
 
#9

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 10:36
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

Aber nur ne spekulation

[EDIT]
ROTER KASTEN AHH
  Mit Zitat antworten Zitat
coocky

Registriert seit: 29. Feb 2008
6 Beiträge
 
#10

Re: Rückgabedatum in Delphi 7

  Alt 29. Feb 2008, 14:33
gut dann werd ich das jetzt mal ein bisschen ausführlicher erklären

also wenn man auf einen Button klickt dann wird in die ListBox3 das Rückgabedatum eingefügt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox3.Items.Add(FormatDateTime('ddd d. mmm. yyyy', Now+28
end;
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)

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  close;
  ListBox3.Items.SaveToFile('Bücherliste3.txt');
end;
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.

Delphi-Quellcode:
 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;
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz