Autor Beitrag
Alphonso
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 06.12.06 22:19 
Hallo!

Ich möchte gerne einen Timer programmieren, der mir eine Zeitdifferenz ausgibt.

Z.B.:

aktuelle Zeit : 22:14:23

eingeg. Zeit : 23:28:32


Differenz : 01:34:09

Der Timer soll in einem Delphi-Timer (System Komp.) untergebracht werden, sodass er ständig runterzählt.

Bin schon seit zwei Tage dran, bekomme es einfach nicht hin!

Gruß
Alphonso
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 06.12.06 22:25 
Hallo!

Wie sieht denn Dein bisheriger Ansatz aus, welche Fehler tauchen auf und wo kommst Du nicht weiter? :-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 07.12.06 07:09 
Hi
Hier mal ein kleiner Test von mir:
Ich habe mal 4 Editfelder und einen Timer auf eine Form gezogen und zwei globale Variablen deklariert:

ausblenden Delphi-Quelltext
1:
2:
Startzeit  :TTime;
  Restzeit   : TTime;

In edit1.Text habe ich '00:00:15' eingetragen= 15 Sekunden Countdown

In Create die Zeit initialisieren
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Startzeit:=Time+strToTime(Edit1.Text);
  Edit2.Text:=FormatDateTime('hh:nn:ss',Startzeit);
end;

und im Timer berechnen und visualisieren....

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Restzeit:=StartZeit-Time;
  Edit3.Text:=FormatDateTime('hh:nn:ss',Restzeit);
  Edit4.Text:=FormatDateTime('hh:nn:ss',Time);
  if Restzeit<=0 then
  begin
    Panel1.Color:=ClRed;
    Timer1.Enabled:=False;
  end;

end;

Ach ja, das Panel 1 soll nur den Ablauf signalisieren.
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Alphonso Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 08.12.06 17:22 
Vielen Dank für eure Hilfe!!!

Die Ansätze sind gut, aber noch nicht ganz das was ich benötige. Vielleicht habe ich auch das Problem nich ganz richtig beschrieben.

Ich möchte einen 'Geburtstagstimer' programmieren, der mir nach der Eingabe des Geburtsdatums (tt.mm.jjjj) und der Uhrzeit (hh:mm:ss) die verbleibenden Jahre, Monate, Tage, Stunden, Minuten, und Sekunden ausgibt.
Das aktuelle Datum und die Uhrzeit soll sich das Programm von der Systemzeit des Pcs holen.

Ich hoffe ich konnte das Problem jetzt präzisieren.


Gruß
Alphonso
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Fr 08.12.06 17:43 
Hallo!
Ich hab mir mal die Mühe geamcht un das Forum hier durchsucht. Verschiedene Codeteile gefunden und zu einem Programm zusammen gefügt. Wie schon gesagt, da ist rein GARNICHTS von mir, nur das zusammen fügen hab ich gemacht.

Viel Spaß damit, hoffe das hilft dir! Das Datum wird in der Datei bday.txt gespeichert, beim Start wird aus dieser das Datum gelesen, wenn sie nicht vorhaden ist, wir eine neue erstellt und ein Datum reingeschrieben.

ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Button1: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    function differenz(Start, Ende: string;
  var tge, std, min, sek: integer): boolean;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.differenz(Start, Ende: string;
  var tge, std, min, sek: integer): boolean;
var dt, h: Double; 
begin 
  try
    dt := strtodatetime(Ende) - strtodatetime(Start); 
    tge := trunc(dt);
    h := frac(dt); 
    std := trunc(h * 24); 
    min := trunc(h * 1440) mod 60; 
    sek := round(h * 86400) mod 60; 
    result := true; 
  except 
    result := false; 
  end; 
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
 Tage, Stunden, Minuten, Sekunden: integer;
  Von, Bis: string; 
begin
  Von := FormatDateTime('dd.mm.yyyy hh:nn:ss', now);
  Bis := Edit1.text;
  if differenz(Von, Bis, Tage, Stunden, Minuten, Sekunden) 
    then
    Label1.Caption := 'Noch genau ' +inttostr(tage) + ' Tage ' +
      inttostr(stunden) + ' Stunden ' +
      inttostr(minuten) + ' Minuten '  +
      inttostr(sekunden) + ' Sekunden'#13#10+ 'bis zum Geburtstag!!'
  else
    showmessage('FEHLER!');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
var SList: TStringList;
begin
SList := TStringList.Create;
  SList.Add(Edit1.Text);
  SList.SaveToFile('bday.txt');
  SList.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
var f : TextFile;
    s : String;
begin
AssignFile (f, 'bday.txt');
Reset (f);
ReadLn(f, s);
Edit1.text := s;
CloseFile(f); 
end;



procedure TForm1.FormCreate(Sender: TObject);
var SList: TStringList;
    f : TextFile;
    s : String;
begin
 if FileExists('bday.txt') then
  begin
  AssignFile (f, 'bday.txt');
  Reset (f);
  ReadLn(f, s);
  Edit1.text := s;
  CloseFile(f);
  end
 else
 begin
  SList := TStringList.Create;
  SList.Add(Edit1.Text);
  SList.SaveToFile('bday.txt');
  SList.Free;
end;
end;
end.