Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeitberechnung für Parkscheinautomat....??!! (https://www.delphipraxis.net/92766-zeitberechnung-fuer-parkscheinautomat.html)

Klaus01 25. Mai 2007 18:03

Re: Zeitberechnung für Parkscheinautomat....??!!
 
Nun. ich weiß nicht ob ihr das dürft, aber
in den DateUtils gibt es eine Funktion Namens minutesBetween.
Diese gibt Dir die Anzahl der Minuten zwischen zwei Daten zurück, wie der Name schon sagt.

Die Stunden erhälts Du wenn Du das Ergebnis div 60 nimmst.
Die restlichen Minuten wenn Du das Ergebnis mod 60 nimmst.

Wenn Ergebnis mod 60 > 0 dann ist eine weitere Stunde angebrochen
und der Stundenwert muß um eins erhöht werden.

Zu MinutesBetween mal in der Delphihilfe nachschlagen.

Grüße
Klaus

Dunkel 25. Mai 2007 18:15

Re: Zeitberechnung für Parkscheinautomat....??!!
 
Zitat:

Zitat von DeddyH
Zitat:

Floor & Ceil gibt es auch in Delphi.
Seit welcher Version denn? In Delphi 5 gab es sie jedenfalls nicht.

Delphi 7 kennt die auf jeden Fall, ich bin mir jetzt nicht sicher, ob die auch schon in Delphi 6 vorhanden waren; MATH einbinden nicht vergessen.

DeddyH 25. Mai 2007 19:46

Re: Zeitberechnung für Parkscheinautomat....??!!
 
Mal kurz zurück zum Thema: wenn ich die Differenz zwischen 2 TDateTime (die ja faktisch Double sind) ermittle, habe ich die Differenz in Tagen als Bruchzahl. Nun müsste diese doch nur noch mit "der Anzahl der Stunden eines Tages" ;) multipliziert werden (dabei die erste Freistunde nicht vergessen) und fertig ist der Lack, oder denke ich mal wieder zu simpel? Der Rest ist lediglich eine Frage der Genauigkeit, d.h. es ist die Frage zu klären, wann eine Stunde als angebrochen gilt (nach einer Minute, Sekunde, Millisekunde?)

TheWedler 30. Mai 2007 16:08

Parkscheinautomatennot!!
 
Hallo!

Vll hat der eine oder andere schon den Parkscheinbeitrag von Sonne und mir gelesen. Leider konnten wir mit den Antworten nicht viel anfangen da wir wirklich absolute Beginner sind. Sonne, ich und weitere 50 Schüler müssen das Programm morgen abgeben und KEINER hat die verlangte Version. Daher meine Bitte an einen "ders Kann" HILFE!!! so unverschämt wie es klingen mag aber wir bräuchten den kompletten Quelltext für die procedur.

LG verzweifelter Tim

Klaus01 30. Mai 2007 16:20

Re: Zeitberechnung für Parkscheinautomat....??!!
 
Jetzt mal im Ernst,

in dem Beitrag steht, wie man die Zeit zwischen zwei Zeitpunkten ermittelt.
Davon eine Stunde abzuziehen dürfte auch nicht so schwer sein.

Ein Editfeld in dem man die EinfahrZeit in das Parkhaus einträgt, könnt Ihr aber schon auf die Form packen?
Oder amcht zwei Editfelder eines für die Stunde und eine für die Minute.
Um aus dem Edit.text eine Zeit zu bekommen, dazu gibt es Funktion encodeTime (aus der Unit SysUitls).
Dazu ist sogar ein Beispiel in der Hilfe vorhanden.

Um die Funktion encodeTime zu nutzen müßt Ihr noch den Edit.text in einen Zahl umwandeln.
Dazu nimmt man die Funktion StrToInt.

Um die aktuelle Zeit zu bekommen gibt es den Befehl now.

So am besten noch einmal alle Beiträge durchlesen und mal loslegen.

Viel Glück.
Klaus

DeddyH 30. Mai 2007 17:25

Re: Zeitberechnung für Parkscheinautomat....??!!
 
Also, ich habe das Programm gerade mal erstellt (war ja noch einfacher, als ich zuerst dachte). Wenn mir die Damen und Herren Schüler hier vor allen anderen versprechen, dass sie bis zum Wochenende fleißig die Hilfe wälzen und mir dann erklären, was ich da eigentlich tue, stelle ich den Source hier rein. Deal? :coder:

DeddyH 30. Mai 2007 19:02

Re: Zeitberechnung für Parkscheinautomat....??!!
 
OK, da keine Antwort mehr kam, nehme ich an, der Deal ist geplatzt ;). Ich stelle mal meine Lösung zur Diskussion, falls wer Interesse daran hat (weil sie so schön klein ist, gleich die ganze Unit):
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Startzeit: TDateTime;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const Stundenpreis = 0.7;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Startzeit := now - Random(2) - Random;
  Label1.Caption := Format('Einfahrt: %s Uhr',[FormatDateTime('dd.MM.yyyy hh:mm',Startzeit)]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var Ende: TDateTime;
    Preis: double;
begin
  Ende := now;
  Label2.Caption := Format('Ausfahrt: %s Uhr',[FormatDateTime('dd.MM.yyyy hh:mm',Ende)]);
  Preis := trunc((Ende - Startzeit) * 24) * Stundenpreis;
  Label3.Caption := Format('Zu zahlen: %.2f €',[Preis]);
(*  das ginge auch noch etwas kürzer unter Einsparung der Variablen "Preis":
  Ende := now;
  Label2.Caption := Format('Ausfahrt: %s Uhr',[FormatDateTime('dd.MM.yyyy hh:mm',Ende)]);
  Label3.Caption := Format('Zu zahlen: %.2f €',[trunc((Ende - Startzeit) * 24) * Stundenpreis]); *)
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Seite 2 von 2     12   

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