AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Programm unterbrechen (und weiterlaufen lassen)

Programm unterbrechen (und weiterlaufen lassen)

Offene Frage von "KPBecker"
Ein Thema von KPBecker · begonnen am 1. Nov 2007 · letzter Beitrag vom 1. Nov 2007
Antwort Antwort
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#1

Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 11:55
Hallo, Delphi-Praktiker,

die Abarbeitung einer Schleife soll angehalten werden können (um in einem Memo etwas anzuzeigen) und dann auf ButtonClick wieder weiterlaufen.
Mit Application.MessageBox z.B. kann man eine solche Unterbrechung erreichen.

Frage:
Geht das (anhalten / Memo anzeigen / BottonClick / an der Stelle weiterlaufen) auch über einen einzelnen Button (ohne MessageBox). (Das Programm soll nicht abgebrochen werden.)

Beste Grüße
Klaus-Peter
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 11:59
Nicht sehr schön, nein. Aber was ginge wäre folgendes:
Delphi-Quellcode:
while nicht fertig do
begin
  if act then
    // deine sachen
  act := false; //schleife unterbrechen
  Delay(0); // aus der Codelib
end;
In einem anderen Button setzt du act auf True und schon läuft die Schleife wieder. Allerdings ist für sowas ein Thread ideal, den man einfach mit .Suspend schlagen legen und mit .Resume wieder wecken kann.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 12:00
Es geht schon, unter Zuhilfenahme von Application.ProcessMessage uä.
Aber das wird nicht sehr schön werden.
Könnte man dein Problem vlt. anders und besser lösen? Was willst du damit erreichen?
Chris
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#4

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 12:07
Hallo, Dax:
Die Schleife "nichtFertig" läuft ja ständig durch. Wie ist das mit der belegten Rechenzeit ?

Hallo, Deep-Sea:
Eine Datei wird in einer Schleife satzweise gelesen, der verarbeitete Satz soll im Memo angezeigt werden (Zuweisung ans Memo und Application.ProcessMessages), dann muß Zeit zum Lesen bleiben. Danach soll der Knopf gedrückt und der nächste Satz gelesen werden (= die Schleife soll weiterlaufen).

Klaus-Peter
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 12:11
Zitat von KPBecker:
Hallo, Dax:
Die Schleife "nichtFertig" läuft ja ständig durch. Wie ist das mit der belegten Rechenzeit ?
Ja, anders geht es ja nicht. Wenn du aber Delay benutzt wie angegeben, wird fast nichts an Rechenzeit belegt.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 13:05
Zitat von KPBecker:
Hallo, Dax:
Die Schleife "nichtFertig" läuft ja ständig durch. Wie ist das mit der belegten Rechenzeit ?

Hallo, Deep-Sea:
Eine Datei wird in einer Schleife satzweise gelesen, der verarbeitete Satz soll im Memo angezeigt werden (Zuweisung ans Memo und Application.ProcessMessages), dann muß Zeit zum Lesen bleiben. Danach soll der Knopf gedrückt und der nächste Satz gelesen werden (= die Schleife soll weiterlaufen).

Klaus-Peter
Würde ich ganz anderst machen.
Funktion und Darstellung trennen.

Ein Button1 mit Text "Datei einlesen".
Hier im OnClick wird die erste Zeile gelesen, im Memo angezeigt und in einer Variablen die Zeilennummer gemerkt.

Dann einen Button "nächste Zeile lesen".
In diesem OnClick wird jeweils eine weitere Zeile gelesen und im Memo angezeigt.
Auch hier merkt man sich die Zeilennummer.
Wenn die Datei zu Ende gelesen ist, wird der Button "nächste Zeile" deaktiviert.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Programm unterbrechen (und weiterlaufen lassen)

  Alt 1. Nov 2007, 13:09
Zitat von KPBecker:
Eine Datei wird in einer Schleife satzweise gelesen, der verarbeitete Satz soll im Memo angezeigt werden (Zuweisung ans Memo und Application.ProcessMessages), dann muß Zeit zum Lesen bleiben. Danach soll der Knopf gedrückt und der nächste Satz gelesen werden (= die Schleife soll weiterlaufen).
Ya dann mach es doch anders: Weise einer Variable, zB. hier mal "Zeilennummer" genannt, die Nummer der ersten Zeile zu. Beim Klick auf den Button liest diese Zeile ein und inkrementierst die Zeilennummer, usw. bis du am Ende bist ...
Sprich: Vergiss die Schleife ^^

(Mist, zu langsam =P ^^)
Chris
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf