Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 06.11.15 17:30 
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
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: 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!

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)