Autor Beitrag
Jogu
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 08.04.20 11:54 
Guten Tag,
ich bin neu hier und brauche Hilfe bei einem kleinen Programm.
Ich programmiere derzeit einen Parkscheinautomat. Das Datum wird eingegeben per DateTimePicker, die Zeit über ein Edit in der Form hh:mm.

Per Knopfdruck soll die Differenz zwischen Ankunftszeit und 'now' ausgerechnet werden, damit ich anschließend einen Preis berechnen kann. Dabei habe ich allerdings Probleme.
Bisher sieht der Quellcode so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Datum, Zeit: string;
    Ankunft: TDateTime;
    t, h, hourof, daysbetween, m, minuteof: integer;
    Differenz, kosten: real;

begin

  Datum:=DateToStr(DateTimePicker1.Date);
  Zeit:=(Edit1.Text);
  Ankunft:=StrToDateTime(Datum+Zeit);

  if now>=Ankunft then

  begin
    t:=daysbetween(Ankunft, now);
    Differenz:=now-Ankunft;
    h:=hourof(Differenz);
    m:=minuteof(Differenz);

    if t=0 then
      Label4.Caption:='0 Tage' ;

    {(u.s.w. für alle anderen möglichen Optionen)}


Laut Problemanalyse fehlen mir in der zweiten BEGIN-Klammer Operatoren oder Semikola. Ich wüsste aber nicht, wo da der Fehler ist, auch, wenn er für euch vielleicht auf der Hand liegt.

Ich hoffe, ihr könnt einigermaßen verstehen, was ich meine und mir eventuell behilflich sein.
Danke im Voraus

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8472
Erhaltene Danke: 446

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 08.04.20 12:37 
Hallo und :welcome: in der Entwickler-Ecke!

Du hast oben bei den Variablen zwei Dinge drin, die da nicht hingehören
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Datum, Zeit: string;
Ankunft: TDateTime;
t, h, hourof, daysbetween, m, minuteof: integer;
Differenz, kosten: real;


Das sind eigentlich Funktionen, die die Stunden- und Minuten-Anteile bzw. die Anzahl der Tage zwischen zwei Daten bestimmen, und später benutzt du diese auch wie Funktionen. Und diese Variablen-Bezeichner haben später in dieser Zeile Vorrang zur Funktionsdeklaration
ausblenden Delphi-Quelltext
1:
t:=daysbetween(Ankunft, now);					


Lösung: Lösch die "falschen" Variablen aus der Var-Liste, dann sollte es klappen. :idea:

Falls nicht, dann muss du die entsprechende Unit bei "uses" eintragen, in der diese Funktionen definiert sind. Die weiß ich aber nicht auswendig - vermutlich DateUtils.

_________________
We are, we were and will not be.