Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TThread Create Override (https://www.delphipraxis.net/191880-tthread-create-override.html)

Towmuz 27. Feb 2017 14:30

Delphi-Version: 5

TThread Create Override
 
Mahlzeit,

ich würde gern Parameter an einen Thread übergeben und komme nicht wirklich weiter, könnte mir jemand ein Beispiel geben?
Die Übergabe wird nur beim Erstellen benötigt, nicht im laufenden Thread. Habe nun verschiedene Dinge ausprobiert, die alle nicht so wirklich laufen wollten, der letzte Versuch sieht so aus:
Delphi-Quellcode:
type
  TIrgendwasThread = class(TThread)
    constructor Create(Suspended: Boolean; var1: string; var2: string; var3: string); overload;
    procedure Execute;
  end;
Klasse:
Delphi-Quellcode:
constructor TIrgendwasThread.Create(Suspended: Boolean; var1, var2, var3: string);
begin
  inherited Create(Suspended);
end;

procedure TIrgendwasThread.Execute;
begin
  while not Terminated do
  begin
    // mache Krams
  end;
end;
Aufruf:
Delphi-Quellcode:
IrgendwasThread := TIrgendwasThread.Create(false, data.var1, data.var2, data.var3);
IrgendwasThread.FreeOnTerminate := True;

Resultat ist ein Abstrakter Fehler

jaenicke 27. Feb 2017 14:34

AW: TThread Create Override
 
Es fehlt das override bei Execute. Außerdem sollte das unter Protected und der Konstruktor unter public stehen.

Aviator 27. Feb 2017 14:35

AW: TThread Create Override
 
Mach aus dem
Delphi-Quellcode:
overload;
mal ein
Delphi-Quellcode:
override;
.

Red Box :cyclops:

Towmuz 27. Feb 2017 14:46

AW: TThread Create Override
 
Danke, der blöde
Delphi-Quellcode:
override
war´s Kopf -> Tisch :)


Delphi-Quellcode:
  TIrgendwasThread = class(TThread)
  public
    constructor Create(Suspended: Boolean; var1: string; var2: string; var3: string); overload;
  protected
    procedure Execute; override;
  end;

haentschman 27. Feb 2017 15:06

AW: TThread Create Override
 
Moin...:P
Im
Delphi-Quellcode:
constructor Create(Suspended: Boolean; var1: string; var2: string; var3: string); overload;
...braucht du das overload nicht. Es sein, denn du hast wirklich mehrere Constructoren. :wink:
Im Constructor brauchst nur du das
Delphi-Quellcode:
inherited Create(Suspended);
... und das ist wichtsch. 8-)

Towmuz 27. Feb 2017 15:35

AW: TThread Create Override
 
Delphi-Quellcode:
Es sein, denn du hast wirklich mehrere Constructoren.
"Noch" nicht :)

haentschman 27. Feb 2017 15:45

AW: TThread Create Override
 
Delphi-Quellcode:
procedure TIrgendwasThread.Execute;
begin
  inherited; // wichtsch...
  while not Terminated do
  begin
    // mache Krams
  end;
end;
:P aber das inherited im Execute habe ich nicht gesehen?

HolgerX 27. Feb 2017 16:42

AW: TThread Create Override
 
Hmm..

weder override, noch overload sondern reintroduce, da es eine andere Version von Create ist!

Whookie 27. Feb 2017 16:58

AW: TThread Create Override
 
Zitat:

Zitat von haentschman (Beitrag 1362800)
Delphi-Quellcode:
procedure TIrgendwasThread.Execute;
begin
  inherited; // wichtsch...

Warum? Execute ist doch abstrakt?

haentschman 27. Feb 2017 18:30

AW: TThread Create Override
 
Wo du Recht hast...:P

Ich hatte mich verguckt. :oops: Ich habe meine Threads von einem Basis Thread, welcher von TTread abgeleitet wurde, abgeleitet. Da gehört das inherited dazu...:P


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz