Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Thread Create... (https://www.delphipraxis.net/58274-thread-create.html)

FabianIBerlin 4. Dez 2005 17:16


Thread Create...
 
ich habe mir einen Thread gebastelt:

Delphi-Quellcode:

Type
  TMyAktuThread = class(TThread)
  private
    LastTime : byte;
  protected
    sende : integer;
    procedure Execute; override;
    procedure DoIt; virtual; abstract;
  public
    constructor create;
  end;


implementation


procedure TMyAktuThread.Execute;
begin
  while true do
    begin
      if StrToInt(copy(TimeToStr(time),7,2))=LastTime then else
        begin
          if sende = 4 then sende := 1 else inc(sende);
          LastTime := StrToInt(copy(TimeToStr(time),7,2));
          Synchronize(DoIt);
        end;
    end;
end;


constructor TMyAktuThread.create;
begin
  inherited create(true);
  Priority := tpLowest;
  LastTime := StrToInt(copy(TimeToStr(time),7,2));
  sende := 1;
end;
und von dem noch einen nachfahren:

Delphi-Quellcode:
Type
  TSteuerThread = class(TMyAktuThread)
  private
  phase : integer;
  intervall : integer;
  protected
    procedure DoIt; override;
    constructor create;
  end;


implementation

uses uMain;

constructor TSteuerThread.create;
begin
  inherited create;
  phase := 1;
  intervall := 1;
  dec(intervall);
end;

procedure TSteuerThread.DoIT;
begin
  case Phase of
      1 : if intervall < 1 then
            begin
              verb[1].SendStr('set:greH');
              intervall := 2;
              phase := 2;
            end
            else
              dec(Intervall);
      2 : if intervall < 1 then
            begin
              verb[1].SendStr('set:yelH');
              intervall := 6;
              inc(phase);
            end
            else
              dec(intervall);
      3 : if intervall < 1 then
            begin
              verb[1].SendStr('set:redH');
              intervall := 26;
              inc(phase);
            end
            else
              dec(intervall);
      4 : if intervall < 1 then
            begin
              verb[1].SendStr('set:ryeH');
              intervall := 6;
              phase := 1;
            end;
  end;
  dec(intervall);
end;
nun ist mir aufgefallen, dass die create methode vom nachfahren bei
Delphi-Quellcode:
 NonnendammSteuer := TSteuerThread.create;
aufgerufen wird bzw garnicht aufzurufen ist. woran liegt das bzw wie kann ich create ausführen lassen?

Ultimator 4. Dez 2005 17:30

Re: Thread Create...
 
Delphi-Quellcode:
if StrToInt(copy(TimeToStr(time),7,2))=LastTime then else
        begin
          if sende = 4 then sende := 1 else inc(sende);
          LastTime := StrToInt(copy(TimeToStr(time),7,2));
          Synchronize(DoIt);
        end;
Aua.
Nimm statt dem
Delphi-Quellcode:
if blabla = bla then else
begin
end
einfach
Delphi-Quellcode:
if blabla <> bla then
begin
 end

FabianIBerlin 4. Dez 2005 17:31

Re: Thread Create...
 
das hilft mir leider absolut nicht zu meinen wirklichen problem!

Phistev 4. Dez 2005 18:22

Re: Thread Create...
 
Der Konstruktor sollte unter public und nicht unter protected stehen, damit man ihn auch außerhalb der Kallse sehen kann.

berens 4. Dez 2005 22:32

Re: Thread Create...
 
Muss Create nicht auch mit override überschrieben werden? Bin mir da nicht ganz sicher, is nur ne vermutung...

FabianIBerlin 5. Dez 2005 15:16

Re: Thread Create...
 
Zitat:

Zitat von berens
Muss Create nicht auch mit override überschrieben werden? Bin mir da nicht ganz sicher, is nur ne vermutung...

Nein, lag schon daran, dass die nicht auf public waren.
Somit thx 2 Phistev


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.

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