Programme Windows qui crash [C++] - C++ - Programmation
Marsh Posté le 26-10-2001 à 18:44:43
nan ca c bon
c bien
Code :
|
t sur que quand tu ferme ta fenetre, tu reste pas dans la boucle des msg?
[edtdd]--Message édité par TheJackal--[/edtdd]
Marsh Posté le 26-10-2001 à 18:51:27
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 :
|
essaye ca
mais si t sur qu'il y a des fichiers.
sinon regarde si
Code :
|
avant de faire FindClose
[edtdd]--Message édité par TheJackal--[/edtdd]
Marsh Posté le 29-10-2001 à 10:18:29
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?
Marsh Posté le 29-10-2001 à 11:28:45
lol j'ai trouvé l'erreur faut mettre un back slash au lieu d'un slash dans le path!
Marsh Posté le 29-10-2001 à 11:56:34
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?
Marsh Posté le 29-10-2001 à 12:14:09
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
Marsh Posté le 29-10-2001 à 12:24:13
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 *'
Marsh Posté le 29-10-2001 à 12:41:00
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
Marsh Posté le 29-10-2001 à 13:10:06
Ok j'avais pas vu la première fois, désolé! merci pour ton aide ca marche maintenant
Marsh Posté le 26-10-2001 à 16:44:40
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???
void Test()
{
HANDLE Test;
LPWIN32_FIND_DATA File;
Test = FindFirstFile("files/*.dat", File);
FindClose(Test);
}