![]() |
scheitere bei TThread schon am Anfang
hallo zusammen!
ich wollte nun das erste mal in meinem delphi-leben Threads benutzen, das scheitert aber schon am anfang! hier mein code:
Code:
und hier die fehlermeldung:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; MyThread = class(TThread) protected procedure execute; override; end; var Form1: TForm1; implementation {$R *.dfm} end. Zitat:
bitte schlagt mich nicht weil es bestimmt super-einfach ist :oops: gruss, iaby |
Re: scheitere bei TThread schon am Anfang
Drück mal Strg+Shift+C :wink:
Lies dir außerdem mal den Hilfeeintrag zu der Compilermeldung durch. |
Re: scheitere bei TThread schon am Anfang
Zwei Dinge: Normalerweise packt man die Thread Classe in eine extra Unit. Und zweitens: Existiert die Prozedur Execute über haupt schon unter implementation?
Ansonsten kuck mal auf meiner HP, da habe ich gerade ein Thread-Demo mit der TThread-Object-Klasse veröffentlicht. Und da findest du noch ein kleines Tutorial zu Threads ohne die VCL Klasse TThread zu benutzen, also reine WinAPI. BTW. das kleine WinAPI-Thread Tutorial ist abgesegnet von Assarabad, grobe Schnitzer sollten also nicht mehr drin sein. :zwinker: |
Re: scheitere bei TThread schon am Anfang
ahhhhhhhh,
jetzt sieht das ganze schon besser aus ;-) ich dachte allerdings, dass die execute prozedur schon beim erstellen des objekts per create ausgeführt wird. nach langem probieren habe ich dann herausgefunden, dass es mit Thread.resume geht! woran liegt das? Thread.free brauche ich ja nicht zu machen( wie ich das bei luckie's tutorial gelesen hab)!?! gruss, iaby |
Re: scheitere bei TThread schon am Anfang
Zitat:
Zitat:
Edit: @Luckie: hab mir dein Demo auch mal angeschaut.. was mir aufgefallen ist:
Delphi-Quellcode:
1) Wozu übergibst du der Methode UpdateValues zwei Parameter wenn diese innerhalb der Methode überhaupt nicht verwendet werden?
private
{ Private-Deklarationen } // Demio-Zähler FCount: Integer; // globale Variablen zum Synchronisieren XIndex: Integer; XCount: Integer; {...} UpdateValues(Loop, FCount); {...} procedure TMyThreads.UpDateValues(Index, Count: Integer); begin // globale Variable zuweise, da der Synchronize Methode keine Variablen // übetgeben werden können. XIndex := FIndex; XCount := FCount - 1; // Synchronize Methode aufrufen Synchronize(UpDateLVCaption); end; procedure TMyThreads.UpDateLVCaption; begin // Synchronize Methode mit globalen Variablen Form1.UpdateLVCaption(XIndex, XCount); end; 2) Wozu führst du die beiden privaten Felder XIndex und XCount ein wenn du stattdessen genausogut FIndex und FCount für UpdateLVCaption verwenden könntest? Edit2: 3) Wozu rufst du die Methode UpdateValues per Synchronize auf? |
Re: scheitere bei TThread schon am Anfang
1.) Mist. Ist noch von irgend was anderem übriggeblieben.
2.) Öhm, ja nun, also, ich meine, ich wollte sagen, also... :oops: 3.) Gute Frage. Alles ausgebessert. ich hatte mich an einem meiner projekte orientiert, wo es irgendwie nicht anders ging. keine Ahnung warum. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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