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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Programme Windows qui crash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Programme Windows qui crash

n°67759
bkadoum
Posté le 26-10-2001 à 16:44:40  profilanswer
 

J'ai 2 probleme
 
1: J'initialise une fenêtre standard, l'applic se lance sans probleme mais quand je la ferme, la fenêtre se ferme bien mais le processus reste dans les tasks et bouffe 99% des ressources :(
 
2: Si j'appel ma fonction Test() dans WinMain , le programme marche quand je link et lance l'executable depuis VC++ mais si je lance l'exe indépendamment du compilateur le programme crash.
Pourquoi??? :cry:
 
void Test()
{
 HANDLE Test;
 LPWIN32_FIND_DATA File;
 
 Test = FindFirstFile("files/*.dat", File);
 
 FindClose(Test);
}

mood
Publicité
Posté le 26-10-2001 à 16:44:40  profilanswer
 

n°67776
TheJackal
Posté le 26-10-2001 à 18:44:43  profilanswer
 

nan ca c bon
c bien

Code :
  1. FileClose( Test );


 
t sur que quand tu ferme ta fenetre, tu reste pas dans la boucle des msg?

 

[edtdd]--Message édité par TheJackal--[/edtdd]

n°67777
TheJackal
Posté le 26-10-2001 à 18:51:27  profilanswer
 

une variable du meme nom que la fonction ca peut entrainer la mort dans certain ca
 
le probleme vient du fait que tu passe un pointeur qui pointe...sur rien
et la fonction essaye d'ecrire dessus
 

Code :
  1. void Test()
  2. {
  3. HANDLE Test;
  4. WIN32_FIND_DATA File;
  5. Test = FindFirstFile("files/*.dat", &File);  
  6. FindClose(Test);  
  7. }


 
essaye ca
 
mais si t sur qu'il y a des fichiers.
sinon regarde si

Code :
  1. Test != INVALID_HANDLE_VALUE

avant de faire FindClose

 

[edtdd]--Message édité par TheJackal--[/edtdd]

n°68116
bkadoum
Posté le 29-10-2001 à 10:18:29  profilanswer
 

TheJackal a écrit a écrit :

une variable du meme nom que la fonction ca peut entrainer la mort dans certain ca
 
le probleme vient du fait que tu passe un pointeur qui pointe...sur rien
et la fonction essaye d'ecrire dessus
 
void Test()  
{  
HANDLE Test;  
WIN32_FIND_DATA File;  
 
Test = FindFirstFile("files/*.dat", &File);  
 
FindClose(Test);  
}
 
essaye ca
 
mais si t sur qu'il y a des fichiers.
sinon regarde si Test != INVALID_HANDLE_VALUE avant de faire FindClose  
 
 




 
Ca marche pas de le passer par référence il ne peut pas convertir de ** en * je pense que ca veut dire que File est deja un pointeur et qu'on peut pas passer par référence un pointeur. DOnc que faire?

n°68119
TheJackal
Posté le 29-10-2001 à 10:26:03  profilanswer
 

tu raconte koi? :pt1cable:

n°68133
bkadoum
Posté le 29-10-2001 à 11:28:45  profilanswer
 

lol j'ai trouvé l'erreur faut mettre un back slash au lieu d'un slash dans le path!

n°68146
bkadoum
Posté le 29-10-2001 à 11:56:34  profilanswer
 

ah non j'ai parlé trop vite en fait je viens de découvrir que c'est si j'apppel FindFirstFile("files/test.dat", File) et que le fichier existe ca crash, si j'appel FindFirstFile("files/tes.dat", File) ca crash plus, super non?

n°68151
TheJackal
Posté le 29-10-2001 à 12:04:46  profilanswer
 

reflechit...

n°68155
bkadoum
Posté le 29-10-2001 à 12:14:09  profilanswer
 

Ben j'ai réféchi et je pense que quand il trouve le fichier il arrive pas a écrire ses infos dans la structure LPWIN32_FIND_DATA et ca je pige pas pourquoi. J'ai passé mon objet File en paramètre comme il faut ou sinon je vois pas que faire de plus a part aller changer le code source de Windows ;)

n°68157
TheJackal
Posté le 29-10-2001 à 12:16:34  profilanswer
 

reflechit encore et regarde le code ke g ecrit...

mood
Publicité
Posté le 29-10-2001 à 12:16:34  profilanswer
 

n°68159
TheJackal
Posté le 29-10-2001 à 12:18:07  profilanswer
 

tu c ce que c au moin LPWIN32_FIND_DATA ?

n°68162
bkadoum
Posté le 29-10-2001 à 12:24:13  profilanswer
 

c'est une structure, la fonction FindFirstFile est censé écrire dedans j'imagine.
 
J'ai essayé de passer le pointeur File par référence comme tu m'a dis mais ca compile pas:
cannot convert parameter 2 from 'struct _WIN32_FIND_DATAA ** ' to 'struct _WIN32_FIND_DATAA *'

n°68165
TheJackal
Posté le 29-10-2001 à 12:41:00  profilanswer
 

typedef WIN32_FIND_DATA *LPWIN32_FIND_DATA;
 
LPWIN32_FIND_DATA est donc un pointeur
en resumer tu fais un pointeur qui pointe sur que dalle et tu demande a la fonction d'ecrire dedans.
 
regarde bien mon example parce qu'il marche tres bien
j'ai pas seulement rajouter le passage par ref

n°68171
bkadoum
Posté le 29-10-2001 à 13:10:06  profilanswer
 

Ok j'avais pas vu la première fois, désolé! merci pour ton aide ca marche maintenant :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Programme Windows qui crash

 

Sujets relatifs
Comment savoir le tps que le programme a mis a s'executer en pascal?[c++] Programme plante à la toute fin de l'execution
[C] Programmation WindowsDévelopper pour Windows CE 3.0
qui pourrait me corriger mon programme ?Refaire une liste des dossiers type windows, comme le forum
[C++] Problèmes sur un programme de chatQuel programme utiliser pour programmer en Pascal ?
[DirectDraw] Lorsque l'on quitte, ça redessine les icônes de windowsTurbo Pascal pour Windows
Plus de sujets relatifs à : [C++] Programme Windows qui crash


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