![]() |
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:
Viele Grüße,
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; deadcantdance |
Re: Klasse von TThreadList ableiten
Wo und wie wird das Create aufgerufen?
|
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.
|
Re: Klasse von TThreadList ableiten
Zitat:
Delphi-Quellcode:
Variante 2 ist falsch!
MyList := TMyList.Create; // Variante 1
MyList.Create; // Variante 2 |
Re: Klasse von TThreadList ableiten
Ahso, mache ich natürlich so:
Delphi-Quellcode:
Edit: Tippfehlerkorrektur - hilfe, ich glaube ich schlafe noch ;)
MyList := tMyList.Create;
|
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. |
Re: Klasse von TThreadList ableiten
Fehler gefunden, es war
Delphi-Quellcode:
wobei MyList bei mir im Code einen anderen Namen trägt, so dass ich das gestern übersehen habe.
MyList := MyList.Create;
Trotzdem danke für Eure Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz