Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wecker - Abruf Problem (https://www.delphipraxis.net/65129-wecker-abruf-problem.html)

Z32 12. Mär 2006 19:03


Wecker - Abruf Problem
 
Hallo, :hi:

Ich habe da eine Frage.

Also ich möchte einen Wecker programmieren. Geht auch alles schon bis auf die erweiterungs Funktion. Also der Benutzer hat die möglichkeit ein Datum einzugeben und um wieviel Uhr es an diesem Datum dann klingel soll. Beide eingaben schreibe ich getrennt in eine txt Datei. Also eine txt Datei für Datum und eine für Uhrzeit. Dann habe ich im Timer Ereignis dieses geschrieben:

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var dat, tim, datdat, timtim: string;
begin
datdat := datetostr (date);
timtim := timetostr (time);
datum.Lines.LoadFromFile('datum.txt');
uhrzeit.Lines.LoadFromFile('uhrzeit.txt');
dat := (datum.text);
tim := (uhrzeit.text);
if dat = datdat then
if tim = timtim then
sndplaysound(PChar('Glockenspiel.wav'),snd_sync);
end;
Für Erklärung: dat und tim sind die ausgelesenen Werte und datdat und timtim sind Uhrzeit und Datum real. Und datum.lines... und uhrzeit.lines... sind zwei Memo Felder, wo angezeigt werden soll, wann es klingel, also was man abgespeichert hat.

So und jetzt habe ich das Problem, dass die Werte anscheinend nicht ausgelesen werden. Es klingelt nähmlich nicht, auch wenn die Eingaben stimmen. Und ich weiß leider nicht wo es hakt.

Kann mir vielleicht einer helfen ???

Flare 12. Mär 2006 19:10

Re: Wecker - Abruf Problem
 
Zitat:

Delphi-Quellcode:
if dat = datdat then
if tim = timtim then
sndplaysound(PChar('Glockenspiel.wav'),snd_sync);

Du solltest die if-Blöcke mit einem begin und end umschließen, ich weiß nicht ob er das auch ohne so macht.

Delphi-Quellcode:
if dat = datdat then
begin
  if tim = timtim then sndplaysound(PChar('Glockenspiel.wav'),snd_sync);
end;
Oder einfach in eine Anweisung stecken

Delphi-Quellcode:
if (dat = datdat) AND (tim = timtim) then sndplaysound(PChar('Glockenspiel.wav'),snd_sync);

Ultimator 12. Mär 2006 19:11

Re: Wecker - Abruf Problem
 
Ich vermute einfach, dass der Timer nicht die genaue Zeit "trifft", prüfe besser, ob die Weckzeit kleiner (vor) oder gleich der aktuellen Zeit ist.

netscanner 12. Mär 2006 19:15

Re: Wecker - Abruf Problem
 
wie schreibst du die daten denn in die txt dateien?
Sie müssen genau mit dem layout vor aus dem computer ausgelesenen zeit übereinstimmen...

Z32 12. Mär 2006 19:23

Re: Wecker - Abruf Problem
 
Vielen Dank,
für die Schnellen Antworten, aber das mit den If Abfragen habe ich zwar direkt geändert, daran liegt es nicht.
Zu dem Layout. Also so mach ich es Datum: 12.03.2006 Und Uhrzeit: 18:30:25 Und das System mach es doch genauso,
oder irre ich mich ???

Flare 12. Mär 2006 19:34

Re: Wecker - Abruf Problem
 
Schau es dir doch einfach an wie es das System macht :-D

Ich weiß zwar gerade nicht wie es das system macht, ic bin mir aber sicher SO wird es nicht sein wenn es nicht funktioniert. Schreibe dir doch noch einfach 2 kleine Befehle rein um dir das ausgeben zu lassen wie das System die Uhrzeit/Datum anzeigt.


Flare

netscanner 12. Mär 2006 19:39

Re: Wecker - Abruf Problem
 
@ Flare: Doch das System macht es genau so...hab grade selber nachgeschaut

gut vom layout stimmt alles...aber ich glaub ich weiß jetzt worans liegt :wink:
Der Sound wird nur abgespielt, wenn zeit und datum genau mit deiner Vorgabe übereinstimmen.
Und darin liegt der fehler...Der Timer aktuallisiert alle 1s, dass heißt 1s nachdem die Zeit erreicht wurde hört der sound schon wieder auf. Wenn die 1.sekunde in der wave datei stille ist hört man den sound natürlich nicht...
Schreib einfach mal statt dem sound:
Delphi-Quellcode:
showmessage ('Zeit erreicht');
Wenn dann eine Meldung erscheint liegt es wirklich an dem oben genannten problem.
Das kann man aber ganz leicht beheben. Schreib dann einfach in die then anweisung über begin und end;
Delphi-Quellcode:
timer1.Enabled := false;
Dann hört der Timer bei der Zielzeit auf zu Zählen und der Sound müsste abgespielt werden.

So ich hoffe ich hab jetzt nicht ganz daneben gehauen :freak:

Z32 12. Mär 2006 20:02

Re: Wecker - Abruf Problem
 
HUHU,

Leider klappt es immer noch nicht. Habe alles ausprobiert.

Mir ist da aber noch ne andere Idee gekommen. Ich lese die txt Dateien ja in ein Memo Feld ein, um dann den Inhalt aus dem Memo Feld in string Variablen zu kopieren. Kann es sein, dass das nicht möglich ist ??? Gibt es einen Befahel, um eine Txt Datei in einem String zu öffenen ???

Ich würde mich über weitere Antworten sehr freuen :wink:

netscanner 12. Mär 2006 20:09

Re: Wecker - Abruf Problem
 
dafür gibt es einen befehl...
schau mal nach assignfileassignfile...
Daran kanns aber eigentlich nicht liegen, ich hab es genau so probiert (nur mit showmessage) und das klappt...

Z32 12. Mär 2006 20:20

Re: Wecker - Abruf Problem
 
Mit "showmessage" klappst ???

Also bei mir noch nicht, was mache ich denn falsch ??? Hier nochmal der Code mit "Showmessage"

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var dat, tim, datdat, timtim: string;
begin
datdat := datetostr (date);
timtim := timetostr (time);
label5.Caption := (datdat);
label4.Caption := (timtim);
datum.Lines.LoadFromFile('datum.txt');
uhrzeit.Lines.LoadFromFile('uhrzeit.txt');
dat := (datum.text);
tim := (uhrzeit.text);
if (dat = datdat) AND (tim = timtim) then showmessage ('Zeit erreicht');
end;
Hat vielleicht noch einer eine andere Idee, oder sieht einen Fehler im Code ???


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.
Seite 1 von 2  1 2      

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