Zeit einbeziehen in Programm
-
- Beiträge: 50
- Registriert: Do 28. Jan 2010, 13:48
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Zeit einbeziehen in Programm
Hallo, kennt Lazarus auch Wochentage oder muss ich immer die Daten eingeben, denn es wäre was, das sich ständig wiederholen würde?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Zeit einbeziehen in Programm
Ja kennt Lazarus auch. Schau dir mal FormatDataTime an.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 50
- Registriert: Do 28. Jan 2010, 13:48
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Zeit einbeziehen in Programm
Hier ein Codeausschnitt der so nicht funktioniert, der Fehler ist in der if ... then Zeile, was muss ich ändern:
Code: Alles auswählen
if encodedate(18,10,2009)<f<21.12.2009 or f>encodedate(03.01.2010) and f<encodedate(08.02.2010) or f>encodedate(21.02.2010) and f<encodedate(05.04.2010) or f>18.04.2010 and f<12.07.2010 or f>encodedate(15.08.2010) and f<encodedate(04.10.2010) or f>encodedate(24.10.2010) and f<encodedate(27.12.2010) then
begin
h:=07;
e:=trunc(now);
b:=e+encodetime(h,05,00,00);
if a>b then
begin
e:=e+1;
end;
b:=e+encodetime(h,05,00,00);
d:=timetostr(b-a);
form10.listbox1.items.add(d+' 500 B Kantonsschule');
e:=trunc(now);
b:=e+encodetime(h,18,00,00);
if a>b then
begin
e:=e+1;
end;
b:=e+encodetime(h,18,00,00);
d:=timetostr(b-a);
form10.listbox1.items.add(d+' 500 C3 Kantonsschule');
e:=trunc(now);
b:=e+encodetime(h,51,00,00);
if a>b then
begin
e:=e+1;
end;
b:=e+encodetime(h,51,00,00);
d:=timetostr(b-a);
form10.listbox1.items.add(d+' 500 C3 Kantonsschule');
h:=08;
e:=trunc(now);
b:=e+encodetime(h,20,00,00);
if a>b then
begin
e:=e+1;
end;
b:=e+encodetime(h,20,00,00);
d:=timetostr(b-a);
form10.listbox1.items.add(d+' 500 C3 Kantonsschule');
end;
form10.listbox1.sorted:=true;
form10.showmodal;
end;
-
- Beiträge: 50
- Registriert: Do 28. Jan 2010, 13:48
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Zeit einbeziehen in Programm
Ich hab jetzt die Fehler beseitigt,( ja ich weiss, Sorry, dass ich sowas Dummes ins Forum gestellt habe). Jetzt ha ich nur noch eine Frage durch was soll ich or ersetzen das geht ja bei TDate anscheinend nicht?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Zeit einbeziehen in Programm
or und and gehen "nur" bei Variablen von Typ Boolean.Z.B. würde sowas gehen if (test = '1') and (test = '2') then ob das jetzt sinn macht ist eine andere Frage. Du musst also eine Bedienung auf stellen, die True oder False sein kann.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 50
- Registriert: Do 28. Jan 2010, 13:48
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Zeit einbeziehen in Programm
> und < scheinen auch nicht zu funktionieren: Got Boolean, expecteded Tdate Time.
Das ist jetzt schlecht, wie kann man das überhaupt lösen?
Das ist jetzt schlecht, wie kann man das überhaupt lösen?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Zeit einbeziehen in Programm
Vielleicht solltest du dir mal die Grundlagen zu boolschen Operatoren zu Gemüte führen. Die Fehlermeldung sagts ja: du mischst boolsche Ausdrücke (True/False) mit Zeiten (TDateTime). Du hast also noch irgendwo einen logischen (Denk-)Fehler, den der Compiler nicht verarbeiten kann.qwertzp hat geschrieben:> und < scheinen auch nicht zu funktionieren: Got Boolean, expecteded Tdate Time.
Das ist jetzt schlecht, wie kann man das überhaupt lösen?
hier mal ein paar Beispiele, um die Typen klar zu stellen:
Code: Alles auswählen
var b1,b2, b3: Boolean; d1,d2: TDateTime;
begin
b1 := d1 < d2;
b1 := b1 and b2 or b3;
b1 := b1 and (b2 or b3);
d1 := not (b1 and (d1 < d2)) or (d2 <> d1);
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 12
- Registriert: Mo 22. Mär 2010, 19:42
Re: Zeit einbeziehen in Programm
Hallo zusammen,
ich habe eine Frage zu "TDateTime". Ich möchte die Zeit stoppen, die eine
rekursive Prozedur zur Ausführung braucht. Dazu müsste ich irgendwie nicht nur
Sekunden, sondern auch MILLISEKUNDEN ermitteln können.
In Delphi gab es dazu den Befehl: "MillisecondOf(...)"
Haben wir hier einen entsprechenden Befehl?
Danke schonmal für die Hilfe.
Martin
ich habe eine Frage zu "TDateTime". Ich möchte die Zeit stoppen, die eine
rekursive Prozedur zur Ausführung braucht. Dazu müsste ich irgendwie nicht nur
Sekunden, sondern auch MILLISEKUNDEN ermitteln können.
In Delphi gab es dazu den Befehl: "MillisecondOf(...)"
Haben wir hier einen entsprechenden Befehl?
Danke schonmal für die Hilfe.
Martin
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Zeit einbeziehen in Programm
Dafür ist TDateTime nicht geeignet. uses LCLIntf; GetTickCount();martinjakobs hat geschrieben:Hallo zusammen,
ich habe eine Frage zu "TDateTime". Ich möchte die Zeit stoppen, die eine
rekursive Prozedur zur Ausführung braucht. Dazu müsste ich irgendwie nicht nur
Sekunden, sondern auch MILLISEKUNDEN ermitteln können.
In Delphi gab es dazu den Befehl: "MillisecondOf(...)"
Haben wir hier einen entsprechenden Befehl?
Danke schonmal für die Hilfe.
Martin
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Zeit einbeziehen in Programm
*räusper* schonmal die Implementation für LCLIntf.GetTickCount für nicht Windwos angesehen?Hitman hat geschrieben:Dafür ist TDateTime nicht geeignet. uses LCLIntf; GetTickCount();
Code: Alles auswählen
Result := DWord(Trunc(Now * 24 * 60 * 60 * 1000));
Das Problem liegt eher daran, dass TDateTime ein Fließkomma-Wert ist und damit mit einer variablen Genauigkeit arbeitet. D.h. je näher an 1.1.1900 desto genauer. Da wir mit ca 110 Jahren noch relativ nahe daran sind, dürfte die Genauigkeit noch ausreichen; in zwanzigtausend Jahren vielleicht nicht mehr, aber dann gibts auch nen neuen Datentyp

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 12
- Registriert: Mo 22. Mär 2010, 19:42
Re: Zeit einbeziehen in Programm
Hallo,
erstmal Danke für den Tipp mit "getTickCount". Das funktioniert schonmal.
Die zweite Lösung mit dem Multiplizieren funktioniert auch!
Bestens also. Hab ich gleich zwei alternative Lösungen.
Kann ich morgen im Unterricht meine Schüler gleich anwenden lassen.
Ich hab letzte Woche nämlich beschlossen, von Delphi auf Lazarus
umzusteigen. Bisher klappts ja auch.
Also, nochmal vielen Dank an beide Lösungen und
gute Nacht.
Martin
erstmal Danke für den Tipp mit "getTickCount". Das funktioniert schonmal.
Die zweite Lösung mit dem Multiplizieren funktioniert auch!
Bestens also. Hab ich gleich zwei alternative Lösungen.
Kann ich morgen im Unterricht meine Schüler gleich anwenden lassen.
Ich hab letzte Woche nämlich beschlossen, von Delphi auf Lazarus
umzusteigen. Bisher klappts ja auch.
Also, nochmal vielen Dank an beide Lösungen und
gute Nacht.
Martin
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Zeit einbeziehen in Programm
Kein Wunder, so wirds schließlich auch gemachtmartinjakobs hat geschrieben:Die zweite Lösung mit dem Multiplizieren funktioniert auch!

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein