AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wecker

Ein Thema von J.P. · begonnen am 30. Sep 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#1

Wecker

  Alt 30. Sep 2006, 17:00
Moin!

Ich möchte in Delphi6 eine Art wecker programmieren, weiß nur nicht, was ich da nehmen soll.
Wie kann man sich die Zeit "richtig" ausspucken lassen?
Mit "getcurrenttime" krieg ich da nur so eine zahl, die überhaupt nicht mit der Uhrzeit übereinstimmt.
Schon mal Danke für eure Antworten.
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#2

Re: Wecker

  Alt 30. Sep 2006, 17:05
So könnte man es machen:
Einfach den Code der unteren Prozedur in einen Timer mit Interval=1000 einsetzen und datetime noch bei der Form eintragen.
Delphi-Quellcode:
procedure TfrmMain.datetime(const strDateTime: string; out strDate, strTime: String);
var i: Integer;
begin
  i := Pos('/', strDateTime);
  strTime := Copy(strDateTime, i+2, i);
  strDate := Copy(strDateTime, 1, length(strDateTime)-i+1);
end;

procedure TfrmMain.Timer1Timer...; // Interval = 1000
var sysDate, sysTime : String;
begin
  datetime(lvTasks.Items.Item[i].SubItems[1], d, t);
  getDateTime(sysDate, sysTime);
  if sysDate = d then
  begin
    if sysTime = t then
    begin

    end;
  end;
end;
  Mit Zitat antworten Zitat
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#3

Re: Wecker

  Alt 30. Sep 2006, 17:06
Danke, ging ja echt schnell...
werds mal ausprobieren.
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Wecker

  Alt 30. Sep 2006, 17:36
@Nils: Wozu dieses String-Rumgefummele ? Der Typ TDateTime wurde nicht zum Spaß erfunden.

@J.P: Versuch es lieber in etwas so:
Delphi-Quellcode:
procedure TForm.TimerTimer(Sender: TObject);
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(TimeEdit.Text); // Für diese Umwandlung muss der eingegebene Zeitpunkt (mit deutschen Formateinstellungen) in der Darstellung DD.MM.YYYY HH:MM:SS vorliegen, wobei auch halbe Angaben wie DD.M. oder DD.MM.YY HH:MM funktionieren
  // stopTime := EncodeDateTime(...) // Hiermit kannst du Jahr, Monat, ... getrennt angeben
  if Now >= stopTime then
    ShowMessage('AUFSTEHN!');
end;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#5

Re: Wecker

  Alt 30. Sep 2006, 17:53
Ich habe das mal aus einem Programm ausgegraben, in dem ich das aus irgendeinem Grund stehen habe.
  Mit Zitat antworten Zitat
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#6

Re: Wecker

  Alt 1. Okt 2006, 12:26
Das erste funkt irgentwie nicht richtig .
Das zweite sieht gut aus, werd das auch mal ausprobieren.

Danke für eure Antworten!
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#7

Re: Wecker

  Alt 1. Okt 2006, 17:21
Hmmm, ich glaub meine Delphi version spinnt.

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(stunde+':'+minute); // Für diese Umwandlung muss der eingegebene Zeitpunkt (mit deutschen Formateinstellungen) in der Darstellung DD.MM.YYYY HH:MM:SS vorliegen, wobei auch halbe Angaben wie DD.M. oder DD.MM.YY HH:MM funktionieren
  // stopTime := EncodeDateTime(...) // Hiermit kannst du Jahr, Monat, ... getrennt angeben
  if Now <= stopTime then begin
  PlaySound(PChar(musik), hInstance, SND_ASYNC);
  Timer1.Enabled := false;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Opendialog1.Execute;
musik := Opendialog1.FileName;
label1.Caption := musik;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound(PChar(musik), hInstance, SND_ASYNC);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
stunde := edit1.text;
minute := edit2.text;
label2.Caption :='Um ' + stunde + ' Uhr und '+minute+' minuten.';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if minute = '' then Begin showmessage('Bitte geben sie eine Zeit an!');stop := 'true'; end else
if stunde = '' then Begin showmessage('Bitte geben sie eine Zeit an!');stop := 'true'; end else
if musik = '' then Begin showmessage('Bitte geben sie den Wecksound an');stop := 'True' end else
stop:='false';
if stop = 'true' then else sendmessage(form1.Handle,WM_SYSCOMMAND ,SC_minimize,0);
if stop = 'true' then else timer1.Enabled := true;

end;

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  if MessageDlg('Sie haben noch den Wecker laufen, wollen sie den Rechner trotzdem beenden?',
                            mtConfirmation,
                            [mbYes,mbNo], 0) = mrNo then
      Msg.Result := 0
   else
      Msg.Result := 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled := false
end;
end.
Immer, wenn ich das so mache, macht der Wecker gar nichts.
Wenn ich aber das "<=" durch ">=" ersetze, spielt er die ganze zeit den sound...

Hilfe!
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#8

Re: Wecker

  Alt 1. Okt 2006, 17:46
Hi,

da fällt mir auf, du hast mit
Delphi-Quellcode:
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(stunde+':'+minute);
einem TDateTime-Objekt nur eine Uhrzeit übergeben.

Warum nicht TTime an Stelle von TDateTime und dann mit StrToTime wandeln!?
Besser finde ich aber einfach ein "Datum + Uhrzeit" an TDateTime als Weckzeit übergeben.

Wenn du dir mal "stopTime" und "Now" als Zahl anzeigen lässt dann siehst du ...

Grüsse, MJ
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Wecker

  Alt 1. Okt 2006, 17:47
Kein Wunder:

Now ist tDateTime mit Datum und Uhrzeit

Dein gewandelter Wert ist nur die Uhrzeit ohne Datum.

Damit ist Now mit Sicherheit immer viel größer als die Prüfzeit.

Du musst also das Datum dazuaddieren.

Ich hoffe das war verständlich - will es jetzt nicht in Delphi schreiben - du musst ja auch noch was tun

Gruss

Thomas
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
J.P.

Registriert seit: 2. Sep 2006
Ort: Bonn
131 Beiträge
 
Delphi 6 Professional
 
#10

Re: Wecker

  Alt 1. Okt 2006, 18:10
UPPPS
MIST...
Naja, Danke für den Tipp...

mvfG J.P.
J.P.
...mfG


Phil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
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