Hiii^^
habe ein Programm erstellt, dass bestimmte Pixel solange abfragt, bis eine boolsche bedingung true is also ca. so:
Delphi-Quellcode:
var bool:Boolean;
begin
repeat ..... //Die Pixel sind Tcolor und werden hier immer wieder abgefragt
...
bool:=(Pixel1 = Pixel2) and (Pixel3 = Pixel 4);
until (bool);
wenn ich das starte funktioniert auch alles! nur das programm is während der repeat-schleife nicht ansprechbar... da es aba mehrere procedures durchführen soll is das schlecht!
habe mir gedacht ein Thread würde helfen: hab mich schlau gemacht und thread erstellt... thread funktioniert auch soweit nur bleibt der Hauptthread (
VCL) und allgemein das ganze Programm wieder während der repeat-schleife stehn...
funktioniert also der wechsel zwischen den threads nicht oder liegt ein Deadlock vor? synkronisiert hab ich bisher nix^^ habs aba scho oft ausprobiert (ohne erfolg)...
hier mein Thread: alles aus einem Thread-Tutorial
http://www.dev-center.de/index.php?c...multithreading
Delphi-Quellcode:
type
TBinFertig =
procedure(
const Content:
String)
of object;
TMyOwnThread =
class(TThread)
protected
MediaPlayer1: TMediaPlayer;
CB1: TCheckBox;
CB2: TCheckBox;
CB3: TCheckBox;
CB4: TCheckBox;
procedure Execute;
override;
private
FBinFertig: TBinFertig;
procedure SyncBinFertig;
public
property BinFertig: TBinFertig
read FBinFertig
write FBinFertig;
end;
...
var
MyOwnThread: TMyOwnThread ;
implementation
{$R *.dfm}
procedure TMyOwnThread.SyncBinFertig;
//weiß damit nix anzufangen, da keine andere porcedure auf zB meine
//Checkbox im Form1 (CB1) zugreift
begin
end;
procedure TMyOwnThread.Execute;
begin
try
bool:=false;
lDC:= GetDC(0);
if lDC> 0
then
repeat
Pixel[1]:= GetPixel(lDC, 554, 138);
// hier frag ich einfach die Pixelfarbe von einem Array of TColor ab
if Form1.CB1.Checked=true
then // geht auch... also diese Checkbox zu checken 0o
bool:=((bool)
or x);
if Form1.CB2.Checked=true
then
bool:=((bool)
or y);
if Form1.CB3.Checked=true
then
bool:=((bool)
or z);
if Form1.CB4.Checked=true
then
bool:=((bool)
or a);
until bool;
//an der endlosschleife bleibt alles hängen es soll aba nur dieser Thread arbeiten NICHT VCL
Form1.MediaPlayer1.Play
except
on e:
exception do begin
showmessage('
blaa');
end;
end;
end;
procedure TSilkroadOnlineTool.Button5Click(Sender: TObject);
var Thread: TMyOwnThread;
begin
Thread := TMyOwnThread.Create(True);
Thread.Resume;
Thread.Suspend;
Thread.Terminate;
Thread.Execute;
end;
end.
also habe heute zum ersten ma Thread in diesem zusammenhang gehört!! und hab deswegen kein plan warum es nich klappt ohne, dass der
VCL stehn bleibt... neue exe is ne möglichkeit müsste aba dann variablen versenden etc und ich hätte 2 exe-dateien
also HELFT mir
plz vielen Dank im voraus