Entwickler-Ecke

Sonstiges (Delphi) - Starten eines Threads per Procedure


Peter18 - Fr 06.11.15 17:30
Titel: Starten eines Threads per Procedure
Ein freundliches Hallo an alle,

ich habe ein Formular erstellt, das mit einer Funktion aufgebaut wird. Die Funktion dazu befindet sich in der Unit des Formulars. Wenn ich diese Funktion aufrufe, wird das Formular erstellt und angezeigt. Nach Eingabe eines Wertes wird dieser zurückgegeben und das Formular beseitigt.

So etwas möchte ich auch mit einem Thread machen. Eine Prozedur (in der Thread-Unit) erhält Parameter und soll den Thread erzeugen, die Parameter verarbeiten und die abgeschlossene Verarbeitung per Ereignisroutine signalisieren. Bei einem Versuch war stets diese Prozedur im Thread nicht bekannt: "Undefinierter Bezeichner" obwohl sie als Public deklariert war.

Meine Fragen:
Geht das bei einem Thread überhaupt? Warum geht es beim Formular, auch wenn es noch nicht erzeugt ist?
Ist dabei irgend etwas zu beachten?
Wenn es nicht geht, muß ich wohl eine Unit darüber setzen?

Etwa so hatte ich es mir gedacht

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
  IO_Thread = class(TThread)
  private

  protected
    procedure Execute;       override;

  public
    Constructor Create    ( var Parameter );
    procedure   StartTread( var Parameter );
 
end;

Grüße von der etwas feuchten Nordsee (von oben)

Peter


Peter18 - Fr 06.11.15 18:59

Noch mal ein freundliches Hallo an alle,

da fällt es mir wie Schuppen aus den Haaren!

Ein ganz blöder Fehler, aber je länger man hinsieht, um so mehr sieht man, was da stehen soll!

Die Procedure darf natürlich nicht im Type deklariert werden!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type
  IO_Thread = class(TThread)
  private

  protected
    procedure Execute;       override;

  public
    Constructor Create    ( var Parameter );

end;
 
  procedure   StartTread( var Parameter );

So geht es!

Grüße von der Nordsee

Peter


Nersgatt - Fr 06.11.15 20:51

Du könntest das StartThread auch als class procedure machen. Dann ist noch etwas klarer, dass die zum Thread gehört.