cs_ad59
Messages postés4Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 4 juin 2003
-
30 mai 2003 à 12:31
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
4 juin 2003 à 13:48
Bonjour à tous Visualiens C++
Voila mon probléme :
je dois via mon application éxécuté plusieurs un utilitaire dos qui permet de modifier des fichiers image au format .tif et donc j'utilise la fonction WinExec() mais ceci je le fais dans une boucle car j'ai des centaines de fichiers à traité hors au bout d'un certain temps (95éme fichier) le programme plante et m'indique un probléme mémoire:"l'adresse xxxxx n'est pas writable" je ne comprends pas et là je suis à bout.....
j'ai dejà utilisé la fonction system() =>meme probléme...
que dois-je faire? Merci à vous.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 30 mai 2003 à 12:40
WinExec() est a bannir, c'est un reste du temps de Win 3.
Il faut utiliser CreateProcess().
Ensuite faut etre certain de l'endroit ou se situe le plantage, avant lancement du prog externe, est-ce lui etc...
Tu devrais te faire un fichier log ou tu ecris les passages a certains endroits cles, tu pourras ainsi cerner le probleme.
BruNews, ciao...
cs_ad59
Messages postés4Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 4 juin 2003 4 juin 2003 à 13:16
Resalut Vieux Lion..
j'ai enfin un résultat mais ça plante toujours voila mon code:
arrivé au 228éme fichiers traité il me dit:
L'instruction 0x004076a7 emploie l'adresse 0x02937b0 qui ne peut etre written....je suis desespéré tout mes espoirs étaient dans CreateProcess()................
voila mon code:
void Tiffkit(char *Source_Tif, char *Dest_Tif, int X, int Y, int gras, char *chaine)
{
char *Commande;
STARTUPINFO si;
PROCESS_INFORMATION pi;
cs_ad59
Messages postés4Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 4 juin 2003 4 juin 2003 à 13:35
Slt!
voila j'ai modifié mon code mais au bout du 228 fichier traités ça plante à cause de la mémoire...
peux tu m'éclairer voila mon code merci d'avance...:
void Tiffkit(char *Source_Tif, char *Dest_Tif, int X, int Y, int gras, char *chaine)
{
char *Commande;
STARTUPINFO si;
PROCESS_INFORMATION pi;
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 juin 2003 à 13:48
Commande = (char *) malloc(TAILLE_COMMANDE);
free(Commande); le pendant de malloc() je ne le vois pas, faut deja que tout le code soit nickel: memoire allouee implique memoire liberee.
De plus il faut tester le retour de malloc() != NULL et tu peux aussi remplacer malloc par HeapAlloc() vu que est code specifique win32 autant aller au + direct.
HANDLE hheap;
Enregistre 1 seule fois au debut du prog:
hheap = GetProcessHeap(); et servira pour les appels successifs de :
Commande = (char *) HeapAlloc(hheap, 0, size);
if(Commande == NULL) pas de memoire dispo;
ton bolot ici, et en sortie de func:
HeapFree(hheap, 0, Commande);
BruNews, ciao...