Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klasse von TThreadList ableiten (https://www.delphipraxis.net/125854-klasse-von-tthreadlist-ableiten.html)

deadcantdance 13. Dez 2008 09:04


Klasse von TThreadList ableiten
 
Hi,

ich möchte eine eigene Listen-Klasse bauen, die von TThreadList erbt. Bisher gibt es nur ein Problem. Im inherited create (also im constructor von TThreadList) gibt es eine Excepion bei InitializeCriticalSection(FLock) - FLock wird als nicht verfügbar im Debugger angezeigt.

Vielleicht erkennt jemand von Euch, wo das Problem liegt. Hier der Code

Delphi-Quellcode:
unit MyListClass;

interface

uses
  classes, sysutils, windows;

type
  tMyList = class(TThreadList)
  private
  public
    constructor Create;
    Destructor Destroy; override;
  end;

var
  MyList : tMyList = nil;

implementation



constructor tMyList.create;
begin
  inherited create;

end;

destructor tMyList.Destroy;
begin
  inherited destroy;
end;
Viele Grüße,
deadcantdance

Uwe Raabe 13. Dez 2008 10:20

Re: Klasse von TThreadList ableiten
 
Wo und wie wird das Create aufgerufen?

deadcantdance 13. Dez 2008 10:45

Re: Klasse von TThreadList ableiten
 
Das Create wird aufgerufen, bevor das Hauptformular erzeugt wird. Aus der .dpr wird eine Methode aufgerufen, die Datenbankverbindung initialisiert, etc. - und hier wird auch das Create der Liste aufgerufen. Sollte kein Problem sein, da da auch andere Listen erzeugt werden, die von TThreadlist abgeleitet sind. Allerdings kann ich zu den Listen und der von mir erstellen Liste keinen Unterschied erkennen.

Flocke 13. Dez 2008 10:57

Re: Klasse von TThreadList ableiten
 
Zitat:

Zitat von Uwe Raabe
Wo und wie wird das Create aufgerufen?

Ich denke die Frage galt eher eine Stückchen Quellcode...
Delphi-Quellcode:
MyList := TMyList.Create; // Variante 1
MyList.Create; // Variante 2
Variante 2 ist falsch!

deadcantdance 13. Dez 2008 11:08

Re: Klasse von TThreadList ableiten
 
Ahso, mache ich natürlich so:

Delphi-Quellcode:
MyList := tMyList.Create;
Edit: Tippfehlerkorrektur - hilfe, ich glaube ich schlafe noch ;)

Uwe Raabe 13. Dez 2008 11:22

Re: Klasse von TThreadList ableiten
 
Welche Exception wird denn ausgelöst?

Setz mal einen Breakpoint auf das InitializeCriticalSection(FLock) und schau, ob das FLock vor dem Aufruf gänzlich mit 0 bzw. nil gefüllt ist. Die Exception müsste dann bei F7 ausgelöst werden. Laut Doku kann das eigentlich nur bei Speichermangel passieren.

deadcantdance 14. Dez 2008 10:14

Re: Klasse von TThreadList ableiten
 
Fehler gefunden, es war

Delphi-Quellcode:
MyList := MyList.Create;
wobei MyList bei mir im Code einen anderen Namen trägt, so dass ich das gestern übersehen habe.

Trotzdem danke für Eure Hilfe!


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