Problème création thread

VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005 - 27 avril 2004 à 15:59
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 27 avril 2004 à 21:26
Bonjour, j'ai un petit problème de création de thread.
Je souhaiterai lancer le thread lorsqu'on appuie sur enter, mais ca bloque dès la crétion sur "inherited Create(CreateSuspended);"
Je ne comprend pas :(
Voici mon code simplifé :

//---- Fonction récupérant la touche Enter-----

procedure Tmario.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
sauter:Tsaut;
begin
if Key=VK_RETURN then
begin
sauter.Create(False); //False pour éxécution directe
end;
end;

//---- Classe THREAD ----

type
TSaut = class(TThread)
public
constructor Create(CreateSuspended:boolean);
end;
implementation

constructor TSaut.Create(CreateSuspended:boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate := True;
Priority := tpLower;
end;

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 avril 2004 à 21:23
Où est passée la méthode Execute ?
Rappel : la méthode Execute de la classe de base est déclarée abstract et ne peut donc être instanciée lors de la création du thread.
(pour info, voici la déclaration dans la classe TThread :
procedure Execute; virtual; abstract;)

Tu dois donc surcharger cette méthode. Pour être sur de ne rien oublier, il vaut mieux utiliser l'assistant (Fichier/Nouveau/Thread).
May Delphi be with you
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 avril 2004 à 21:26
De plus, tu n'instancies pas le thread de façon correcte :

if Key=VK_RETURN then
begin
sauter.Create(False);

au lieu de :
if Key=VK_RETURN then
begin
sauter := TSaut.Create(False);

La méthode Create est une méthode de classe (constructor) et non une méthode qui s'applique à une instance d'une classe.
May Delphi be with you
0
Rejoignez-nous