r144
Messages postés20Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention30 janvier 2004
-
21 janv. 2004 à 16:37
r144
Messages postés20Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention30 janvier 2004
-
22 janv. 2004 à 19:45
Bonjour,
j'ai trouvé ici même un code source pour la recherche de fichiers dans un répertoire
Mais ce source qui utilise FindFirstFile et FindNextFile ne fonctionne pas sous XP ==> erreur : "... la mémoire ne peux pas être read"
ya t-il une autre méthode qui marcherait sous tous les windows ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 21 janv. 2004 à 17:53
Cela me le fait également avec une autre API (même type d'erreur) : GetDIBits utilisée sous VB : elle marche avec un exemple bien précis, mais dès que j'utilise d'autres exemples, Windows me signale une erreur de mémoire qui ne peut pas être Read... vraiment bizarre !
DarK Sidious
[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 21 janv. 2004 à 18:15
GetDIBits est egalement reconnue sur tout win32 mais par contre retourne une valeur differente selon la plateforme et les parametres qu'elle reçoit. MSDN donne tous les details sur ce sujet. Voila un exemple d'API qui peut t'emmener a une exception memoire si on ne gere pas tous les cas possibles.
XP a un memory manager nouveau, aucune faute n'est toleree. Si donc avant vous pointiez une zone memoire non allouee mais sur la meme page, ça pouvait passer bien souvent. Avec XP c'est le crash du prog a tout coup et perso je trouve cela tres bien car oblige a un code propre.
ciao...
BruNews, Admin CS.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 21 janv. 2004 à 19:34
Houla, vu que c'est un prog VB (je sais, ce n'est pas forcément le forum le plus approprié pour en parler, mais bon, j'ai le même genre d'erreur...), l'allocation de la mémoire pour mon tableau de Bits qui récupère les bits de l'image grâce à la fonction doivent normalement être bien faite...
Je n'ai pas essayé de programmer mon algorithme en C mais je ne pense pas que cela vienne de là vu que l'allocation de mémoire est faite automatiquement en VB il me semble, non ?
Par contre, il est fort possible que VB n'est pas le temps de tout allouer car lorsque j'interrompt le prog pendant quelques millisecondes (environ 500) juste avant de lancer la fonction, alors je n'ai pas l'erreur... bizarre !
DarK Sidious
[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 21 janv. 2004 à 19:35
hey BruNews, tu as changer de status, felicitation =)
sinon pour ton prob r144, c'est le meme code ou tu l'as modif entre temps ? c'est peut-etre pas FindFirstFile et FindNextFile qui foire... tu as regarder les spec pour XP sur MSDN ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 21 janv. 2004 à 19:47
ben non sebseb42, je suis dans la continuite mais comme il parait qu'il y en a qui ne le savent pas, c'est maintenant precise dans la signature.
ciao...
BruNews, Admin CS.
r144
Messages postés20Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention30 janvier 2004 22 janv. 2004 à 09:18
Bonjour
en fait mon problème est bizarre.
J'utilise le FindFirtsFile et FindNextFile pour la rehcercher de .jpg dans un répertoire
Quand ce répertoire contient des .jpg mon prog ne plante pas mais lorsqu'il ne contient pas de .jps alors la j'ai le plantage du prog.
J'ai debugger avec c++ et il plante sur la ligne FindFirstFile
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 janv. 2004 à 09:34
C'est bien entendu un mauvais emploi, j'ai pourtant fait assez d'exemples de parcours de dossier ou disque entier, suffit de regarder dans mes sources.
ciao...
BruNews, Admin CS.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 janv. 2004 à 12:14
Excuse mais pourrais tu reproduire cela en supprimant le 'else' derriere return, on y verra plus clair.
Je finis par me demander si:
FindClose(hfind);
n'est pas dans la boucle.
Faut eviter les else, do etc encastres a repetition sinon ce n'est plus lisible.
ciao...
BruNews, Admin CS.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 janv. 2004 à 13:51
A moins que cette ligne:
listImage[compteurImage] = wfd.cFileName;
n'ecrase une zone de donnees, pas de raison apparente pour planter.
Vois que si SHBrowseForFolder reussit, tu dois liberer la memoire pointee par le ITEMIDLIST.
LPMALLOC pMalloc;
if(SUCCEEDED(SHGetMalloc(&pMalloc))) {pMalloc->Free(il); pMalloc->Release();}