#1 22. Februar 2007 Beep befehl in schleife setzten. Hallo. Ich bin daran, mir en Wecker zu programmieren. Dabei brauch ich den Beep befehl. Der sollte ca. 10 mal hintereinander auftönen. Doch wie mach ich die Schleife dafür? Hab nämlich nicht so viel Ahnung von Delphi. Bewertung ist drin Gruß Rhino + Multi-Zitat Zitieren
#2 22. Februar 2007 AW: Beep befehl in schleife setzten. Code: for i := 1 to [COLOR="Red"]10[/COLOR] do begin beep; end; Die 10 zeigt an wie oft wiederholt wird, der Wert kann natürlich auch ne Variable sein... Grundlagen für Delphi gibts übrigens auf Home - Delphi-Treff erklärt MfG mighty90 + Multi-Zitat Zitieren
#3 22. Februar 2007 AW: Beep befehl in schleife setzten. Es gibt mehrere Methoden: Code: [B]var [/B]i:Integer; [B]begin[/B] [..] [B]for [/B]i:=0 [B]to [/B]50 [B]do[/B] [B]begin[/B] [..] [B]end[/B]; [...] [B]end[/B]; oder Code: [B]var [/B]i:Integer; [B]begin[/B] [..] [B]while [/B]i < 50 [B]do[/B] [B]begin[/B] [..] [B]end[/B]; [...] [B]end[/B]; oder du benutzt einfach das TTimer - Objekt. Und zum abschspielen des SOunds kannst ja TMediaplayer benutzen. Mfg Rushh0ur + Multi-Zitat Zitieren
#4 22. Februar 2007 AW: Beep befehl in schleife setzten. Also wenn du das mit der while-Schleife machst, musst du aber beachten, dass du jedes Mal wenn die Schleife durchlaufen wird die Variable (in dem Fall i) hochgezählt wird. (Hoffe das ich da jetzt richtig liege^^) Code: var i:Integer; begin while i < 10 do begin [B] i := i + 1; beep;[/B] end; end; Also für meine Begriffe nur umständlich, ohne das es irgendeinen Vorteil zur For-Schleife gibt, bei deinem Beispiel. MfG mighty90 + Multi-Zitat Zitieren
#5 23. Februar 2007 AW: Beep befehl in schleife setzten. uses windows; var i : integer; begin for i := 1 to 10 do windows.beep(freq,dur); end; freq und dur sind integer, dabei ist ersteres die frequenz in hertz und zweiteres die dauer des beepens in milisekunden. gebeept wird über den systemspeaker. + Multi-Zitat Zitieren
#6 23. Februar 2007 AW: Beep befehl in schleife setzten. danke , danke. Das hat mir geholfen. Doch jetzt geht mein beep befehl nicht mehr. ich schreib beep; zu einem Button (onclick) und es geht nicht. Es kommt aber ein Ton aus dem Headset. Gestern hat der Beep befehl noch funktioniert. Was ist da los? Gruß Rhino Ps: Bewertung hat jeder + Multi-Zitat Zitieren
#7 23. Februar 2007 AW: Beep befehl in schleife setzten. hmm ich bin auch noch ziemlich neu....wie issen der befehl, wenn ich mittem player n sound öffnen will? und wie kann ich den timer programmieren, also das er meinetwegen den sound nach ner halben std abspielt? + Multi-Zitat Zitieren
#8 23. Februar 2007 AW: Beep befehl in schleife setzten. da gibts sogar sowas wie ne suchfunktion.... Tipps & Tricks - Delphi-Treff <--- sound ohne Player Tipps & Tricks - Delphi-Treff <--- Video mit Player (also müsste des auch so mit nem Sound gehen) Und wenn man Timer eingibt, gibts auch nen paar Beispiele, wo nen Timer drin is. Bsp. von mir: Code: procedure TForm1.Timer1Timer(Sender: TObject); begin sndPlaySound(PChar('C:\Datei.wav'),SND_SYNC); end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Interval := [COLOR="Red"]1[/COLOR] * 1000; Timer1.Enabled := True; end; Auf dem Fenster sind nur ein Button und ein Timer. Beim öffnen des Formulars ist der Timer ausgeschaltet (Enabled --> False). Nach dem Klick auf den Button wird als erstes die Zeit "eingestellt" (ich weis nich wie ichs sonst nennen soll^^), in welchen Zeitabständen der Timer halt seine Aktion ausführt. Die rote 1 stellt den Abstand in Sekunden dar, und deine gewünschten 30 Minuten wären 1800 Sekunden. mit Timer1.Enabled := True; wird der Timer aktiviert, und führt in dem Bespiel nach 1 Sekunde den Befehl sndPlaySound(PChar('C:\Datei.wav'),SND_SYNC); aus. Was fehlt in dem Beispiel?? Ich denke mal, das der Sound auch irgendwann wieder aufhören soll zu spielen, also musste das noch irgendwie mit reinbringen und wenn der Sound nich nach 30 Minuten wieder abgespielt werden soll, musste den Timer auch wieder anhalten. MfG mighty90 + Multi-Zitat Zitieren
#9 23. Februar 2007 AW: Beep befehl in schleife setzten. Dann fehlt aber noch etwas Code: var i:Integer; begin [b]i := 0;[/b] //I initialisieren while i < 10 do begin [b]inc(i);[/b] //Direkter speicherzugriff ist schneller beep end; end; Sonst ist es zufall ob die schleife überhaupt oder nur teilweise ausgeführt wird. + Multi-Zitat Zitieren
#10 24. Februar 2007 AW: Beep befehl in schleife setzten. Ok da muss ich denn oben geschriebenen Beiträgen recht geben, habs ausfersehen vergessen hinzuschrieben. Um besser zu veranschaulichen, wie man es über einen TTimer machen könnte habe ich schnell ein kleines Beispiel geschrieben: http://www.megaupload.com/de/?d=0BW82EO9 oder http://rapidshare.com/files/17963577/Wecker.zip.html Da hab ich nur mit einfachen Befehlen und schon fertigen Objekten gearbeitet und deswegen ist das auch nicht das Optimalste, aer man kann sehen wie sowas funktionieren könnte. @asdrexit Bei Delphi wird ob "inc(i);" oder "i:=i+1" soweit ich weiss immer in den selben Maschienencode optimiert und deswegen ist dies eigentlich egal, bei anderen Programmen kann dies durchaus sein aber bei Delphi nicht, das macht der Compiller automtaisch. Mfg Rushh0ur + Multi-Zitat Zitieren
#11 24. Februar 2007 AW: Beep befehl in schleife setzten. Das kann sein, dass der Compiler "i:=i+1" zu einem Speicherbefehl macht, wenn i ein Integer ist. + Multi-Zitat Zitieren