Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TThread in Liste eintragen? (https://www.delphipraxis.net/56802-tthread-liste-eintragen.html)

Angel4585 11. Nov 2005 13:15


TThread in Liste eintragen?
 
Hallo zusammen

Ich habe z.B.:

Delphi-Quellcode:
TMyThread = class(TThread)
 private
 protected
  procedure Execute;override;
 public
  constructor Create;
 end;
und möchte Diesen in eine Liste eintragen, TList oder so.

Jetzt habe ich die TObjectlist gesehen und mit

Delphi-Quellcode:
List.Add(TMyThread.Create);
Allerdings kommt da ein Zugriffsfehler.

Jetzt wollte ich wissen was da falsch ist, oder ob es ne andere Liste gibt, bei der das besser geht.

Danke schonmal

EDIT: Fehler ist nicht Lesen von Adresse 0. Ich hab die Liste davor Erzeugt :warn:

Neutral General 11. Nov 2005 13:22

Re: TThread in Liste eintragen?
 
Delphi-Quellcode:
  TMyThread = class(TThread)
  private
  protected
   procedure Execute;override;
  public
   constructor Create;
  end;
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
 // inherited Execute; darf man nicht schreiben :D
end;

constructor TMyThread.Create;
begin
  inherited Create(false);
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var T: TMyThread;
    h: TObjectlist;
begin
  T:= TMyThread.Create;
  h:= TObjectList.Create;
  h.Add(T)
 // h.Add(TMyThread.Create);  funktioniert bei mir auch.
end;
Also DAS funktioniert bei mir ohne Probleme.. Also generell scheint es zu gehen...
Vielleicht hast du ja vergessen die Objectliste zu erstellen mit Objectlist := TObjectList.Create;
EDIT: Ich hab grad gelesen das du die Liste anscheinend doch erzeugt hast :mrgreen:

Angel4585 11. Nov 2005 13:30

Re: TThread in Liste eintragen?
 
Also bei meinem Execute steht nicht inherited Execute drin, allerdings dürfte das nichts ausmachen.

hmm.. naja, danke werds am WE nochmal durchlesen, vielleicht liegt es doch an was anderem.

THX

Neutral General 11. Nov 2005 13:33

Re: TThread in Liste eintragen?
 
Zitat:

Zitat von Angel4585
Also bei meinem Execute steht nicht inherited Execute drin, allerdings dürfte das nichts ausmachen.

hmm.. naja, danke werds am WE nochmal durchlesen, vielleicht liegt es doch an was anderem.

THX

Naja es funktioniert bei mir auch ohne inherited Execute;
Kann es sein das bei dir dann eine Fehlermeldung "Abstract Error" kommt? also wenn ich T.Execute ausführe bevor ich T zur Liste hinzufüge dann gibts auch Ärger...

EDIT: Ich merke grad das liegt an dem Execute.. man darf inherited Execute gar nicht aufrufen :D

Angel4585 11. Nov 2005 13:44

Re: TThread in Liste eintragen?
 
ne ich habs mal zeile für zeile durchgagengen.

Sobald inherited Create(False) ausgeführt wird kommt der Fehler. ist kein Abstrakt error, der íst auch sowieso nur im debugger sichtbar, wenn ich das prog ohne delphi starte denn sieht man glaub diese abstracterrors nicht.

naja ich schau am WE mal und sag dann Montag mal bescheid obs geht.

Wie kann ich eigentlich auf einen Thread mit seiner ThreadId zugreifen. also angenommen ich hab nur ne Id, z.B. 612. Wie kann ich dann eine Prozedur aus dem Thread aufrufen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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