Autor Beitrag
masteroffinalfantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win XP
Delphi 2005 Architect
BeitragVerfasst: Do 09.08.07 10:48 
Glück auf!

Ich hab (mal wieder) ein Problem. Und zwar folgendes:

In meinem Programm verschachtel ich verschiedene Prozeduren miteinander. Das sieht (veranschaulicht) so aus:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure c
begin
..
end;

procedure b
begin
...
c;
end;

procedure a;
begin
b;
end;

procedure Button1.Click;
begin
a;
end;


Heißt auf Deutsch man klickt auf den Button 1, der startet dann procedura a, die wiederum in gewisser abhängigkeit procedure b startet usw....
In den Prozeduren sind dann gewisse schleifen, die dann auch die anderen Prozeduren aufrufen...


Mein Problem ist, dass während dieses Ablaufes ich nicht auf andere Komponenten wie Buttons, Timer etc zugreifen kann...

Frage: Warum ist das so und wie kann man das beheben?


Moderiert von user profile iconGausi: Topic aus Algorithmen, Optimierung und Assembler verschoben am Do 09.08.2007 um 11:53
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 09.08.07 10:53 
Das ist so, weil die Prozeduren a,b,c alle im VCL-Hauptthread ausgeführt werden. D.h. der Rechner ist damit beschäftigt und kann nicht gleichzeitig auch noch auf deine Eingaben reagieren.

Beheben kann man das, indem man ab und zu ein Application.ProcessMessages einbaut - dann werden die Eingaben und sonstige Nachrichten an deine Anwendung erstmal abgearbeitet. Das kann dann aber auch wieder Probleme geben, wenn man z.B. dieselbe Berechnung mehrfach startet.

Besser (aber auch etwas komplizierter) wäre die Verwendung von Threads.

_________________
We are, we were and will not be.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 09.08.07 10:54 
In Threads auslagen oder aber application.processmessages in die schleifen schreiben. Die suche hulf zu beiden Stichpunkten.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
masteroffinalfantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win XP
Delphi 2005 Architect
BeitragVerfasst: Do 09.08.07 10:59 
wow danke euch für die schnellen antworten :)

Ich werde mich zu diesem Thema belesen und hoffe das alles funktioniert :)