AGB  ·  Datenschutz  ·  Impressum  







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

Schleife

Ein Thema von BWRobert · begonnen am 12. Nov 2011 · letzter Beitrag vom 12. Nov 2011
Antwort Antwort
BWRobert

Registriert seit: 30. Sep 2011
Ort: Geislingen/steige
4 Beiträge
 
Delphi 7 Personal
 
#1

Schleife

  Alt 12. Nov 2011, 11:44
Delphi-Version: 5
Hallo,

Ich bin grade dabei spaßeshalber eine "Blaulichtsteuerung" zu programmieren. Hierbei kann der Benutzer auf einem Steuerelement (BitButton) das Martinshorn anschalten. Ich habe eine Wave Datei, die diese Tonfolge abspielt, in eine Schleife programmiert. Sie läuft also nachdem man es angeschaltet hat z.b. 20 mal ab. Meine Vorstellung wäre nun aber, dass der Benutzer mit einem Klick das Signal anmacht und es einfach weiterläuft. So lange bis der Benutzer wieder auf den Button klickt und es sich ausschaltet.
Delphi-Quellcode:
procedure TForm1.BitBtnPressluftClick(Sender: TObject);
Var i :Integer;
begin
Repeat
  begin
   PlaySOUND(PChar('.\Pressluft-2.wav'),hInstance,snd_LOOP );
  end;
until ;
end;
Das wäre meine Überlegung gewesen. Nach until müsste dem Programm also gesagt werden "until click" oder irgend so was.
Robert Mandrysch
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

AW: Schleife

  Alt 12. Nov 2011, 11:50
Du musst deine Funktion zum Abspielen in eine eigene Funktion auslagern. Diese rufst du auf, wenn das Click-Event ausgelöst wird. Gleichzeitig setzt du eine globale Variable auf true, welche in der repeat-until-Schleife geprüft wird.

In der Schleife selbst bringst du noch ein application.processmessages unter, damit der Button-Click verarbeitet wird. Sollte jetzt das Click-Event ausgeführt werden und die globale Variable auf true stehen, dann wird die Funktion nicht nochmal ausgeführt, und die Variable bekommt den Wert false. Das führt wiederum dazu, dass die Schleife beendet wird.

Allerdings: Wenn das Programm noch etwas anderes machen soll, dann musst du dich mit Threads beschäftigen. Gibt aber genug Beispiele dafür.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Schleife

  Alt 12. Nov 2011, 12:06
http://www.swissdelphicenter.ch/torr...ode.php?id=335
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

AW: Schleife

  Alt 12. Nov 2011, 12:34
Oder einfach so (wenn Bitmasken addiert werden, bekomme ich immer den großen grünen Arkl-Anfall):
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FPlaying: Boolean;
  public
    { Public-Deklarationen }
  end;

...

uses MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
const
  Dateiname = 'Pressluft-2.wav';
var
  Soundfile: PChar;
  Flags: Cardinal;
begin
  FPlaying := not FPlaying;
  if FPlaying then
    begin
      SoundFile := PChar(ExtractFilePath(ParamStr(0)) + Dateiname);
      Flags := SND_ASYNC or SND_LOOP;
    end
  else
    begin
      SoundFile := nil;
      Flags := 0;
    end;
  PlaySound(SoundFile, 0, Flags);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BWRobert

Registriert seit: 30. Sep 2011
Ort: Geislingen/steige
4 Beiträge
 
Delphi 7 Personal
 
#5

AW: Schleife

  Alt 12. Nov 2011, 18:13
Danke für die schnellen Antworten!
Ich werde mich zeitnah daran versuchen
Robert Mandrysch
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:03 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