Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1167 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Exécuter une méthode d'un objet dans un Thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exécuter une méthode d'un objet dans un Thread

n°1124628
Inekman
Posté le 19-06-2005 à 17:07:58  profilanswer
 

Salut les gens,
 
J'ai un objet qui a une méthode qui effectue un certain traitement.
 
Problème : j'utilise l'api CreateThread de Windows pour exécuter les méthodes sauf que je ne peux pas exécuter une méthode d'un objet, j'ai un message d'erreur :
 

--> [Error] Unit1.pas(90): Variable required


 
la tête de la fonction :

function TForm1.grimpe: boolean;


le lancement du thread :

MonThread := CreateThread(nil, 0, @grimpe, nil, 0, id);


Voilà le prototype de la fonction :

HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes  
    DWORD dwStackSize, // initial thread stack size, in bytes  
    LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function  
    LPVOID lpParameter, // argument for new thread  
    DWORD dwCreationFlags, // creation flags  
    LPDWORD lpThreadId  // pointer to returned thread identifier  
   );


sachant que cela fonctionne parfaitement si je met ceci :

function grimpe: boolean;


 
Donc dès que je dis que la fonction appartient à Form1, ça ne passe plus. Donc vu que c'est le même principe avec un Objet perso, je sais pas comment faire :(

mood
Publicité
Posté le 19-06-2005 à 17:07:58  profilanswer
 

n°1125067
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-06-2005 à 11:23:20  profilanswer
 

Elle doit avoir quel style la fonction ? A priori une méthode c'est juste une fonction/procédure qui a un premier paramètre "Self: TObject" caché.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1125175
Inekman
Posté le 20-06-2005 à 13:34:16  profilanswer
 

La fonction appelée par le thread doit être de ce type :
 

DWORD WINAPI ThreadFunc( LPVOID );


 
En delphi, je me suis renseigné, on doit l'écrire comme ça :
 

function MaFonction(Ptr:Pointer):DWORD;stdcall;


 
Mais si "MaFonction" est une méthode d'un objet, ça ne fonctionne pas -> "Variable Required" me dit-il..et si je retire l'appartenance à un objet, ça marche...c'est ce que j'ai fait :D

n°1125181
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-06-2005 à 13:40:00  profilanswer
 

Mélanger des fonctions C et des objets c'est pas simple :o Tu peux pas faire une fonction simple qui appelera elle-même la méthode ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1135002
Olyv
Posté le 29-06-2005 à 17:17:17  profilanswer
 

il y a un objet TThread (classe abstraite) qui fonctionne plutôt pas mal pour implémenter des Threads.
 
Une procédure et une procédure de classe sont gérés différemment. Il me semble que la procédure de classe est déjà un pointeur. (j'en mettrais pas ma main à couper au feu)

n°1135015
Inekman
Posté le 29-06-2005 à 17:30:46  profilanswer
 

Non ben finalement j'ai bricolé et ça marche nikel :)

n°1135032
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-06-2005 à 17:48:22  profilanswer
 
n°1135035
Inekman
Posté le 29-06-2005 à 17:53:23  profilanswer
 

Oui tout à fait :D et honnêtement, j'ai appris plein de truc grâce aux API Win32 que je n'aurai sû en utilisant les trucs de Delphi ;) Et perso je kiffe à mort :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Exécuter une méthode d'un objet dans un Thread

 

Sujets relatifs
Multi-ThreadAppel de la méthode OnMouseDown d'une grille sous C++ Builder
comment executer une commande en C++méthode d'intégration de monte carlo 2D
Internationalisation en java ... bonne méthode ?Exécuter procedure apres insertion dans input
Inversion de matrice nxn n tres grand. Méthode numérique?[Access 2003] certaines propriétés ou méthode ne fonctionne pas !!
L'objet navigator...question communication entre form
Plus de sujets relatifs à : Exécuter une méthode d'un objet dans un Thread


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR