AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi schleife unterbrechech und fortsetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

schleife unterbrechech und fortsetzen?

Ein Thema von xe0n · begonnen am 4. Jan 2006 · letzter Beitrag vom 4. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
xe0n

Registriert seit: 17. Dez 2005
15 Beiträge
 
#1

schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 18:48
Hi @ all

gibt es eine möglichkeit eine Schleife anzuhalten (ja klar das geht wäre ja schlimm wenn nicht )
aber wie kann ich dann die schleife dann weiterlaufen lassen von genau dem punkt an wo die stehengeblieben ist

Delphi-Quellcode:
procedure delay(MILLISEC:integer;edit2,edit3,edit4:tedit);
var
Tick:Dword;
x,a:integer;
b:extended;
begin
edit1.text:=inttostr(GetTickCount);
MILLISEC:=strtoint(edit2.text);
Tick := GetTickCount + DWord(Millisec);
while (Millisec > 0) do begin
 Application.ProcessMessages;
       Millisec := Tick - GetTickcount;
       b:=millisec;
       b:=b/1000;
       b:= RoundTo(b,-0);
       edit3.text:=floattostr(b);
       a:=strtoint(edit4.text);
       if a = 0 then break;
end;
end;
so hier mal schnell nen code damit es etwas anschaulicher wird.
Ich möchte die schleife stoppen und wieder fortsetzen.
das break bricht leider die komplette schleife /procedure ab

hoffentlcih hat jemand ne Idee würde mich freuen
thx im vorraus

mfg Xe0n
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 18:55
Ich denke mal, du kannst eine Schleife höchstens pausieren.

Dazu einfach folgendes in der Schleife aufrufen:

Delphi-Quellcode:
if condition1 then
repeat Application.ProcessMessages; until condition2;
Wenn condition1 wahr ist, wird die Pause gestartet. Sobald condition2 wahr ist, wird die Schleife fortgesetzt.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#3

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 18:58
Du willst das Delay in Abhängigkeit von der Eingabe in Edit4 quasi "aussetzen" oder weiterlaufen lassen, ist das richtig? Dann prüfe die "Anhalte"-Bedingung doch in einer inneren Schleife, in der ein Application.ProcessMessages jedoch nicht fehlen sollte.

-----

O.K. - zu spät...
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
xe0n

Registriert seit: 17. Dez 2005
15 Beiträge
 
#4

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:00
@ tomsel jop genau

und wie bau ich das oben ein ?

Delphi-Quellcode:
       a:=strtoint(edit4.text);
       if a = 0 then break;
das müsste ich ja ersetzen

Delphi-Quellcode:
if a=0 then
repeat Application.ProcessMessages; until a<>0;
iss das so korrekt ???

mfg Xe0n
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:01
Genau. Aber a:=strtoint(edit4.text); würde ich vorher schon noch aufrufen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:02
Zitat von xe0n:
gibt es eine möglichkeit eine Schleife anzuhalten (ja klar das geht wäre ja schlimm wenn nicht )
aber wie kann ich dann die schleife dann weiterlaufen lassen von genau dem punkt an wo die stehengeblieben ist
Innerhalb der Schleife gesteuert?
Sleep().
Von außen gesteuert aber innerhalb der Anwendung?
In einer Single-Thread-Anwendung gar nicht. Die Schleife in einen zweiten Thread auslagern und mit geeigneten Techniken (SuspendThread() (wenn du weißt, was du tust), WaitFor*Object*()) unterbrechen.
Von außerhalb der Anwendung gesteuert?
WaitFor*Object*()

Alle genannten Funktionen findest du im Platform SDK, das auch Teil des MSDN ist.


Je nachdem, was du machen willst, sind CriticalSections ebenfalls eine Möglichkeit, einen Thread daran zu hindern, Code auszuführen, bis jemand anderes die CriticalSection wieder freigibt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:03
Sleep würde ich nicht machen. Dann wird nämlich der ganze Prozess ausgesetzt und man kann auch die Eingabe im Edit nicht mehr ändern.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
xe0n

Registriert seit: 17. Dez 2005
15 Beiträge
 
#8

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:09
@ tommie-lie

das klinkt viel zu kompliziert ich glaube es gibt noch ne einfachere methode

so ungefähr richtig ??

Delphi-Quellcode:
if a=0 then
repeat Application.ProcessMessages; until begin
a:=strtoint(edit4.text); a<>0 end;
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#9

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:14
Delphi-Quellcode:
if a=0 then
repeat Application.ProcessMessages; until begin
a:=strtoint(edit4.text); a<>0 end;
Nee, jetzt hakt's.

Guckst du hier:

Delphi-Quellcode:
procedure delay(MILLISEC:integer;edit2,edit3,edit4:tedit);
var
Tick:Dword;
x,a:integer;
b:extended;
begin
edit1.text:=inttostr(GetTickCount);
MILLISEC:=strtoint(edit2.text);
Tick := GetTickCount + DWord(Millisec);
while (Millisec > 0) do begin
Application.ProcessMessages;
       Millisec := Tick - GetTickcount;
       b:=millisec;
       b:=b/1000;
       b:= RoundTo(b,-0);
       edit3.text:=floattostr(b);
       a:=strtoint(edit4.text);
       while a <> 0 do begin
         Application.ProcessMessages;
         a:=strtoint(edit4.text);
       end;
end;
end;
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
xe0n

Registriert seit: 17. Dez 2005
15 Beiträge
 
#10

Re: schleife unterbrechech und fortsetzen?

  Alt 4. Jan 2006, 19:17
ne also das hackt bei dirjetzt aber auch sry

hmmm wenn ich jetzt das prog starte fängt der nich an zu zählen wenn ich das edit4 aud 0 änder zählt der zb 10sec runter mach dann nicht weiter wenn ich auf 1 änder zählt er auch net bleibt dann sozud´sagen hängen



Delphi-Quellcode:
       if a = 0 then
       repeat Application.ProcessMessages until strtoint(edit4.text)<>0 ;
so hab mal das probiert funzt auch soweit aber wenn ich stop drücke läuft der sche** timer noch
der zählt die sec trotzdem weiter runter was sich nicht sogut macht

koennte das problem zu beheben sein wenn ich ttimer := disable ??
  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 17:28 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