Datum vergleich.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Chris237
Beiträge: 11
Registriert: Mi 18. Sep 2013, 20:09

Datum vergleich.

Beitrag von Chris237 »

Hallo Leute,

ich Programmiere gerade für die Arbeit ein kleines Programm in dem zwei Datum miteinander vergleicht werden sollen.

Ich hatte was versucht aber so geht das leider nicht ich hoffe ihr könnt mir weiter helfen.

Danke in voraus

MFG

Chris


Versuch:

Code: Alles auswählen

 procedure TForm3.Button1Click(Sender: TObject);
begin
  if DateEdit1.Date = Calendar1.Date then ;
  begin
    ShowMessage(' Fahrzeug muss zur wartung! ');
  end;
end;     

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Datum vergleich.

Beitrag von wp_xyz »

Du sagst nicht, was der Fehler ist. Ich vermute, dass die Meldung immer erscheint. Das liegt an dem Strichpunkt am Ende der "if"-Zeile - dadurch wird die "if"-Abfrage sofort beendet, es gibt keinen bedingten Ausführungsblock.

Falls das nicht hilft, kann es auch daran liegen, dass TDate eine Gleitkommazahl ist. Vielleicht enthält einer der beiden Datumswerte noch einen Uhrzeit-Anteil (Nachkommastelle) oder du hast die üblichen Rundungsfehler beim Vergleich zweier Double(o.ä.)-Zahlen. Schneide mit trunc einfach die Nachkommastellen ab, dann bekommst du integers für die glatten Tage zum Zeitpunkt 0 Uhr:

Code: Alles auswählen

procedure TForm3.Button1Click(Sender: TObject);
begin
  if trunc(DateEdit1.Date) = trunc(Calendar1.Date) then    // ; entfernt
  begin
    ShowMessage(' Fahrzeug muss zur Wartung! ');
  end;
end

Chris237
Beiträge: 11
Registriert: Mi 18. Sep 2013, 20:09

Re: Datum vergleich.

Beitrag von Chris237 »

Hey sry stimmt die Fehlermeldung hatte ich vergessen.

Fehlermeldung: unit3.pas(37,21) Error: Operator is not overloaded: "TDateTime" = "AnsiString"



Und leider hat sowohl das semikolon entfernen hat nichts gebracht und auch trunc hat leider nichts gebracht aber trotzdem danke :D

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Datum vergleich.

Beitrag von wp_xyz »

OK - TCalendar.Date ist offenbar ein String. Verwandle ihn mit StrToDate in ein TDate:

Code: Alles auswählen

procedure TForm3.Button1Click(Sender: TObject);
begin
  if DateEdit1.Date = StrToDate(Calendar1.Date) then   
  begin
    ShowMessage(' Fahrzeug muss zur Wartung! ');
  end;
end;

Chris237
Beiträge: 11
Registriert: Mi 18. Sep 2013, 20:09

Re: Datum vergleich.

Beitrag von Chris237 »

Danke das war der fehler :D

NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Datum vergleich.

Beitrag von NoCee »

Ich weiß ja nicht was du vor hast und ob das dann so im Prog steht,
aber wenn das am Samstag erfüllt ist, muß das Fahrzeug am Montag bei Arbeitsbeginn nicht mehr zur Wartung!

Gruß
NoCee

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Datum vergleich.

Beitrag von Mathias »

aber wenn das am Samstag erfüllt ist, muß das Fahrzeug am Montag bei Arbeitsbeginn nicht mehr zur Wartung!


Einfach das = durch >= ersetzen und schon muss das Fahrzeug auch später zur Wartung.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Datum vergleich.

Beitrag von baumina »

Es gäbe auch CompareDate
.

Antworten