Autor Beitrag
alexschultze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: So 08.12.02 12:38 
ahoi,

ich habe mein Programm, und das soll ein Thread starten. Alles einfach.
Starten mit test.Create();

Aber!
Kann ich diesem Thread wie einer Prozedur oder einer Funktion auch Variablen übergeben?

green
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mi 18.12.02 11:35 
Du kannst eine globale Variable deklarieren. Wenn die Variable während der Ausführung des threads verändert werden kann, musst du noch so eine art "valid-flag" deklarieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
 test: tthread;
 form1: tform1;
 var1: integer;
 var1valid: boolean;

procedure ttest.execute;
begin
 repeat
  if var1valid then begin
   flag1valid := false;
   verarbeiten(var1);
  end;
 until {...};
end;

procedure tform1.button1click(sender: tobject);
begin
 var1 := 123;
 var1valid := true;
end;


PS: evtll könnte es auch mit messages klappen, dann müsstest du bei jedem thread-durchlauf Application.ProcessMessages() aufrufen;

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 18.12.02 12:14 
Hallo,

du kannst den Constructor für dein Thread-Objekt so definieren, das er die Parameter verlangt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
test = class(TThread)
  private
    { Private-Deklarationen }
  protected
    fWert : LongInt;
    procedure Execute; override;
  public
    constructor Create(Wert : LongInt; CreateSuspended : BOOLEAN = TRUE);
  end;

[...]
constructor test.Create(Wert: Integer; CreateSuspended: BOOLEAN);
begin
  Inherited Create(CreateSuspended);
  fWert := Wert;
 [...]
end;


Gruß
Klabautermann

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt