Autor Beitrag
>spEEd>
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62


Delphi 2005 Pers.
BeitragVerfasst: Di 16.05.06 14:34 
Hi,

sofern ich das richtig verstanden habe, hält Application.Processmessages; das Programm so lange an, bis alle Prozesse, die im Hintergund (z.B. in Prozeduren) ablaufen, von dem Computer abgearbeitet wurden. Gibt es auch die Möglichkeit diese Prozesse abzubrechen?

>spEEd>


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Di 16.05.2006 um 14:37
Moderiert von user profile iconGausi: Topic aus Windows API verschoben am Di 16.05.2006 um 15:13
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.05.06 14:39 
Suche nach Suche in der Entwickler-Ecke KILLPROCESS findet brauchbare Treffer.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 16.05.06 14:42 
ich glaube nicht, dass er das meint, er spricht ja von prozeduren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 16.05.06 14:48 
Ich glaube, das hast du falsch verstanden. Oder ich habe dich falsch verstanden. In einem Programm läuft immer nur ein Prozess (ist evtl. nicht der richtige Begriff) ab (es sein denn, man verwendet Threads). Wenn eine Prozdur OnKlickIrgendwas ausgeführt wird, und in dieser Zeit z.B. auch ein Timer sein Intervall beendet und eigentlich was anderes tun möchte, dann muss der Timer so lange warten, bis die OnKlick-Prozedur fertig ist.

Ein "Vordrängeln" ist möglich, wenn man z.B. in die OnKlick-Prozedur an einigen Stellen ein Application.ProcessMessages aufruft. Das bewirkt, dass die Nachrichtenschleife des Programms verarbeitet wird. In die Nachrichtenschleife kommt z.B. rein, wenn der User in der Zwischenzeit einen anderen Knopf gedrückt hat, oder sich der Timer gemeldet hat.

Das heisst: Application.Processmessages hält nicht das Programm an, bis alle laufenden Prozesse beendet sind, sondern hält die laufende Berechnung an und schiebt die Verarbeitung der Nachrichten (z.B. Usereingaben) an das Programm dazwischen.

_________________
We are, we were and will not be.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.05.06 14:49 
Könnte auch sein. Ich habe als Ausgangspunkt meiner Überlegungen "Application.ProcessMessages" genommen. :?
>spEEd> Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62


Delphi 2005 Pers.
BeitragVerfasst: Di 16.05.06 14:59 
Vielleicht hab ich mich einfach nur ein wenig missverständlich ausgedrückt...
Ich möchte nur die Prozesse, die in meinem Programm ausgeführt werden abbrechen. Beispiel: Ich habe eine Endlos-Schleife in meinem Programm und möchte, dass bei einem Mausklick alles abgebrochen wird, was das Programm bearbeitet (also auch diese Endlos-Schleife).
Ich weiß nicht, ob es hierfür eine Lösung gibt, allerdings könnte ich dadurch Änderungen der Kamera-Ansicht bei meinem 3D-Programm wesentlich schneller berechnen lassen.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 16.05.06 15:11 
Das lässt sich z.B. mit einer globalen Variable machen (oder einer Eigenschaft der Form).

In der Endlossschleife setzt du erstens alle paar Durchläufe ein Application.processmessages, gefolgt von einem if Abbrechen then break;. Ins OnClick des Abbrechen-Buttons kommt dann ein Abbrechen := True;.
Vor Beginn der Rechnung/Schleife muss natürlich "Abbrechen" wieder auf False gesetzt werden.

Aber das hat nichts mehr mit Winapi zutun (*zurückverschieb*)

_________________
We are, we were and will not be.
>spEEd> Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62


Delphi 2005 Pers.
BeitragVerfasst: Di 16.05.06 15:25 
Ich habe in meinem Programm leider zu viele Prozeduren, Funktionen und Schleifen, um überall die IF-Abfrage mit einzubauen. Schade, dass es dafür keine weitere Möglichkeit gibt, aber trotzdem vielen Dank an alle für eure Hilfe!

>spEEd>