Autor Beitrag
coocky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 25.02.08 15:14 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  if FileExists ('Bücherliste3.txt')
    then ListBox3.Items.LoadFromFile('Bücherliste3.txt');
  for lIx := 0 to ListBox1.Items.Count-1 do begin
    lInt := StrToIntDef(ListBox1.Items.Strings[lIx], 0);
  if lInt<Now then showmessage('Ausleihdatum überschritten');
                     listBox2.Canvas.Font.color:=clgreen;


jetzt kommt aber immer eine message, egal ob überschritten oder nicht.


Bitte helft uns.

MfG


Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am Mo 25.02.2008 um 15:44
Nico72
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

Win XP, Vista
Delphi 7, Delphi 2006
BeitragVerfasst: Mo 25.02.08 15:43 
Hallo,

was steht denn in ListBox1.Items.Strings[lIx] drin?
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mo 25.02.08 16:26 
user profile iconcoocky hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  // hier wird der Wert aus der Listbox als integer interpretiert
    lInt := StrToIntDef(ListBox1.Items.Strings[lIx], 0);
  // hier wird der integer-wert mit einem Floatwert verglichen,
  // daher ergibt der Ausdruck immer ein True (1 is nu mal kleiner als 1,00000000001)
  if lInt<Now then showmessage('Ausleihdatum überschritten');
                     listBox2.Canvas.Font.color:=clgreen;



falls in Listbox1.Items.Strings[i]) ein Datum steht, wäre die
StrToIntDef()- function zu ersetzen durch eine
StrToDateTimeDef()-function zu ersetzen

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
coocky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 25.02.08 19:18 
user profile iconNico72 hat folgendes geschrieben:
Hallo,

was steht denn in ListBox1.Items.Strings[lIx] drin?


in der listbox steht das rückgabedatum drin
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mo 25.02.08 20:12 
user profile iconcoocky hat folgendes geschrieben:
user profile iconNico72 hat folgendes geschrieben:
Hallo,

was steht denn in ListBox1.Items.Strings[lIx] drin?


in der listbox steht das rückgabedatum drin


Du kannst ein Datum nicht mit StrToInt in einen Integer-Wert konvertieren.
coocky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 26.02.08 17:37 
ja und wie dann? das is ja unter anderem unser problem das wir nich wissen wie man das macht wir kennen halt nur das StrToInt
Nico72
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

Win XP, Vista
Delphi 7, Delphi 2006
BeitragVerfasst: Di 26.02.08 17:43 
user profile iconcoocky hat folgendes geschrieben:

falls in Listbox1.Items.Strings[i]) ein Datum steht, wäre die
StrToIntDef()- function zu ersetzen durch eine
StrToDateTimeDef()-function
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Mi 27.02.08 09:12 
user profile iconcoocky hat folgendes geschrieben:
ja und wie dann?


Die Funktion StrToDateTime() sollte Euch helfen. ;-)

Lg, Martin

_________________
Ein Nutzer der Ecke ;-)
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 27.02.08 09:36 
@cooky:
... wer fragt sollte auch die Antworten LESEN ...
Lösung steht in meinem ersten Post hier und wurde auch schon von Nico72 zitiert !

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Mi 27.02.08 10:32 
user profile iconzuma hat folgendes geschrieben:
@cooky:
... wer fragt sollte auch die Antworten LESEN ...


Vielleicht hat cooky es einfach nur überlesen ;-)

_________________
Ein Nutzer der Ecke ;-)
coocky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 27.02.08 17:50 
user profile iconzuma hat folgendes geschrieben:
@cooky:
... wer fragt sollte auch die Antworten LESEN ...
Lösung steht in meinem ersten Post hier und wurde auch schon von Nico72 zitiert !


wir lesen das schon nur wir verstehen die antworten oft nicht weil wir arbeiten erst seit nem halben jahr in der schule mit delphi und sind da noch nich so bewandert das wir eure antworten immer gleich in die tat umsetzen können.

also ich hab jetz die funktion ersetzt

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var lIx , lInt : integer;
  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 showmessage('Ausleihdatum überschritten');


und jetzt kommt aber die Fehlermeldung: "Inkompatible Typen "Integer" und "TDateTime"
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 27.02.08 17:53 
user profile iconcoocky hat folgendes geschrieben:
und jetzt kommt aber die Fehlermeldung: "Inkompatible Typen "Integer" und "TDateTime"


Die Fehlermeldung sagt es ja schon aus. ;-) Du rufst die Funktion StrToDateTimeDef auf und die gibt das Funktonsergebnis im TDateTime Format zurück. Du versuchst aber der Variable lInt den Wert zuzuweisen. Und lInt ist vom Typ Integer. ;-)
coocky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Do 28.02.08 16:30 
also ich hab das jetz geändert und jetz kommt zwar keine fehlermeldung mehr aber jetzt funktionierts nicht mehr. Also die message erscheint jetzt immer, auch wenn das Datum nicht überschritten ist.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
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;
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 28.02.08 18:13 
Da boolische Variablen meines Erachtens standardmäßig True sind, solltest Du "ueberschritten" vorher auf False setzen.

Grüße
Marc.
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Fr 29.02.08 11:23 
Das hab ich dir doch hier schon reingeschrieben und sogar gehighlighted :nixweiss: