![]() |
hilfe!repeat-schleife mit abbruchfunktion
Hi Leute!
ich bin mitlerweile echt verzeweifelt.... warscheinlich bin ich einfach zu doof!!! :wall: :wall: :wall: !!!! Follgendes Problem: ich will ein kleines Program schreiben, dass eine Endlosschleife produziert die jedoch abbgerbochen werden soll wenn man button2 drückt... ich hatte schon fast ne lösung aber immer wenn ichs ausgeführt hab ist prozess bei 100% und es tut sich absolut nichts ! könnte mir jemand erklären wies geht mit der Schleife wenns geht ganz genau weil ich immernochnicht weiß obs jetzt:
Delphi-Quellcode:
heißt oder
repeat
//net send 192.168.0.1 lala;
Delphi-Quellcode:
repeat
... net send 192.168.0.1 lala; vielen dank im voraus .... skreap |
Re: hilfe!repeat-schleife mit abbruchfunktion
Vieleicht so:
Type TForm1 = Class(TForm) Private FClicked :Boolean; {...} End; Procedure TForm1.Button2Click(Sender:TObject); Begin FClicked:=True; End; Procedure TForm1.Schleifenfunktion; Begin Repeat { Irgendwas } Application.ProcessMessages; Until FClicked; End; |
Re: hilfe!repeat-schleife mit abbruchfunktion
Ich weiß nicht welchen produktiven Sinn es haben sollen in einer Schleife beliebig oft Net Send Nachrichten zu verschicken !?!?
Generell müsste es so gehen:
Delphi-Quellcode:
Trotzdem weiß ich nicht welchen Sinn dein Programm haben soll. :gruebel:
var
test : Boolean; //Jetzt die Schleife bei klick auf Button1 procedure form1.Button2click(Sender : TObject); begin repeat //Dein Net Send Zeug until test = true; end; //Jetzt bei Klick auf Button2 wirds abgebrochen procedure form1.Button2click(Sender : TObject); begin test := true; end //Edit: Kleine Veränderung P.S.: Nicht getestet |
Re: hilfe!repeat-schleife mit abbruchfunktion
Das kann so aber nicht funktionieren, wenn man in einer endlosschleife ist, kann kein button gedrückt werden. ich weiß zwar nicht wie es delphi funktioniert, aber in JAVA macht man das mit einem Thread.
|
Re: hilfe!repeat-schleife mit abbruchfunktion
einen tieferen Sinn hat die Sache eigentlich auch nicht...will nur testen obs geht weil n Freund von mir behauptet hat dass er so zeugs übers inet bekommt und ich das schwer anzweifle!dann wollt ichs wissen obs geht aber ich komm mit der schleife nicht hin !keine Ahnung warum !
werd die Tips mal testen, danke skreap |
Re: hilfe!repeat-schleife mit abbruchfunktion
Zitat:
Dein Freund sollte mal den Narichtendienst ausschalten wenn er die ganze Zeit solche Messages bekommt. |
Re: hilfe!repeat-schleife mit abbruchfunktion
Wenn dein Programm in der Schleife hängt, kann es nich mehr auf eingaben reagieren. Die Benutzeroberfläche friert komplett ein!
Nimm doch einen Timer und setzt den Befehl (ohne Schleife) in das OnTimer Event! Kannst den Interval ja ganz klein wählen. |
Re: hilfe!repeat-schleife mit abbruchfunktion
hi, hab ihm den Nachrichtendienst ausgeschaltet...
das problem waren ja nicht die messages sondern dass sie in ner endlosschleife waren und dass bekommt man ja über die Konsole ( cmd ) nicht hin oder ? skreap |
Re: hilfe!repeat-schleife mit abbruchfunktion
Zitat:
Man macht es in Delphi auch mit Threads, kann es aber mit Application.ProcessMessages mehr oder weniger unsauber lösen. |
Re: hilfe!repeat-schleife mit abbruchfunktion
Zitat:
//EDIT: hmm irgendwie, gleichzeitig gepostet ;) Zitat:
|
Re: hilfe!repeat-schleife mit abbruchfunktion
@PierreB: deine Variante geht, aber man kann nicht abbrechen. Es fehlt eine Applikation.Processmessage;
Delphi-Quellcode:
Ich habe es bei mir probier, es sollte so gehen.
var
test : Boolean; //Jetzt die Schleife bei klick auf Button1 procedure form1.Button2click(Sender : TObject); begin repeat //Dein Net Send Zeug application.processmessage; until test = true; end; //Jetzt bei Klick auf Button2 wirds abgebrochen procedure form1.Button2click(Sender : TObject); begin test := true; end; |
Re: hilfe!repeat-schleife mit abbruchfunktion
Hi,
was hat das Ganze mit einer Endlosschleife zu tun? :gruebel: Zitat:
Delphi-Quellcode:
MfG Marc
var
i: Integer; . . . i := 0; repeat dec(i); until i >= 0; |
Re: hilfe!repeat-schleife mit abbruchfunktion
Ja, aber mit der Endlosschleife und dem ProcessMessages hast du ja ne CPU Auslastung von 100%
Ich würd das so machen:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin //Dein Net Send Zeug end; procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 100; Timer1.Enabled := True; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := False; end; |
Re: hilfe!repeat-schleife mit abbruchfunktion
Zitat:
|
Re: hilfe!repeat-schleife mit abbruchfunktion
Delphi-Quellcode:
Das ist aber auch keine Endlosschleife. Irgendwann bis du bei low(Integer) angekommen.
var
i: Integer; . . . i := 0; repeat dec(i); until i >= 0; |
Re: hilfe!repeat-schleife mit abbruchfunktion
ok...ich werd mal testen und morgen vllt mal meine Kollegen fragen soweit scheint es zu gehen nur Messages kommen nicht an ... trotzdem vielen Dank für eure Hilfe
Tschau skreap |
Re: hilfe!repeat-schleife mit abbruchfunktion
Ich behelfe mir immer so
Delphi-Quellcode:
Button1.Tag:=0; // Annahme nicht gestoppt
While Button1.Tag=0 do begin // Routine Application.ProcessMessages; end; Button1.Tag:=0; // oder zur späteren Auswertung auf Wert lassen |
Re: hilfe!repeat-schleife mit abbruchfunktion
Das ist eine Endlosschleife:
Delphi-Quellcode:
while 0<>1 do
... |
Re: hilfe!repeat-schleife mit abbruchfunktion
@skreap: Ändere doch bitte mal deinen Titel .. sonnst wird hier noch seitenweise diskutiert was alles ne Endlosschleife ist oder nicht. :mrgreen:
Zum Problem: Wenn du ne schleife aber keine 100% haben willst kannste ja ein "wait" einbauen (pause ohne sleep siehe DP) ansonnsten würd ich eher nen Timer empfehlen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz