begin process at 2012 05 30 20:10:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

WinExec() bug!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

WinExec() bug!!!

vendredi 30 mai 2003 à 12:31:58 | WinExec() bug!!!

ad59

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.
vendredi 30 mai 2003 à 12:40:09 | Re : WinExec() bug!!!

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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.
mercredi 4 juin 2003 à 13:16:41 | Toujours CreateProcess()!

ad59

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;

Commande = (char *) malloc(TAILLE_COMMANDE);
sprintf(Commande, "%s source=%s, dest=%s, format=512, size=16, x=%d, y=%d, bold=%d,save=0, text=%s",
CHEMIN_TIFFKIT, Source_Tif, Dest_Tif, X, Y, gras, chaine);
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

// Start the child process.
if( !CreateProcess( NULL, Commande, NULL, NULL,FALSE,0,NULL,NULL,&si,&pi))
{
printf("Error impossible de creer le process");
exit(1);
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}


Merci de m'éclairer une derniére fois et aprés je t'embête plus merci.
mercredi 4 juin 2003 à 13:35:19 | Re : WinExec() bug!!!

ad59

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;

Commande = (char *) malloc(TAILLE_COMMANDE);
sprintf(Commande, "%s source=%s, dest=%s, format=512, size=16, x=%d, y=%d, bold=%d,save=0, text=%s",
CHEMIN_TIFFKIT, Source_Tif, Dest_Tif, X, Y, gras, chaine);
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

// Start the child process.
if( !CreateProcess( NULL, Commande, NULL, NULL,FALSE,0,NULL,NULL,&si,&pi))
{
printf("Error impossible de creer le process");
exit(1);
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}

Cette fonction je l'appelle autant de fois qu'il y a de fichiers c'est à dire des centaines de fois....
je suis desesperé!!
mercredi 4 juin 2003 à 13:48:18 | Re : Toujours CreateProcess()!

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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;
>
> Commande = (char *) malloc(TAILLE_COMMANDE);
> sprintf(Commande, "%s source=%s, dest=%s, format=512, size=16, x=%d, y=%d, bold=%d,save=0, text=%s",
> CHEMIN_TIFFKIT, Source_Tif, Dest_Tif, X, Y, gras, chaine);
> ZeroMemory( &si, sizeof(si) );
> si.cb = sizeof(si);
> ZeroMemory( &pi, sizeof(pi) );
>
> // Start the child process.
> if( !CreateProcess( NULL, Commande, NULL, NULL,FALSE,0,NULL,NULL,&si,&pi))
> {
> printf("Error impossible de creer le process");
> exit(1);
> }
>
> // Wait until child process exits.
> WaitForSingleObject( pi.hProcess, INFINITE );
>
> // Close process and thread handles.
> CloseHandle( pi.hProcess );
> CloseHandle( pi.hThread );
> }
>
>
> Merci de m'éclairer une derniére fois et aprés je t'embête plus merci.


Cette discussion est classée dans : fonction, fichiers, bug, probléme, winexec


Répondre à ce message

Sujets en rapport avec ce message

Taille de fichiers [ par Screderman ] Hello !Je cherche un moyen ( une fonction ) permettant de trouver la taille d'un fichier afin que je puisse le lire en entier avec ma fonction de lect copier des fichiers [ par lamoueste ] bjr a tous alors simplement j'aurai aime savoir comment copier des fichiers en C++ pour le moment j'utilise la fonction copyfile() mais cela ne marche Ouvrir tous les fichiers d'un dossier 1 par1 [ par Buzu ] Je cherche à développer une fonction qui ouvre tous les fichiers d'un dossier spécifié 1 par 1.Existe-t-il une fonction qui renvoie le nombre de fichi Fonction pour Copier des Fichiers ??? [ par lol55 ] Bonjour, je cherche une fonction en C/C++ pour Copier des fichiers. J'ai déjà trouvé la fonction CopyFile(); mais lorsque je compile (avec Visual C++) reception fichiers par rs232 [ par sergio18 ] Bonjour,Mon Problème: je veux recevoir un fichier Programme d'une commande numérique via RS232.Mais je ne connais pas le nombre de caractere que compo Problème avec l'ouverture totale de certains fichiers! [ par ndubien ] Bonjour, J'ai un problème avec l'une de mes fonctions, cette derniere est censée ouvrir tous les fichiers du début à la fin mais lorsqu'elle renc probléme de lecture d une trame [ par dgac ] Bonjour,j'ai crée un programme pouvant effectuer l nevoie d une trame et la reception . mais dans ma fonction lecture je reste bloqué a mon instructio Problème avec la copie Shell... [ par shinnokamui ] Bonjour,J'ai un problème avec mon programme C++, qui effectue une copie de fichiers avec l'API win32 en utilisant le Shell (fonction SHFileOperation). suppression des fichiers [ par boualiasma ] Bonjour, Je voulais supprimer totalement à partir de mon programme C sous windows tous les fichiers textes temporaires dans mon répertoire de travail suppression de fichier en fonction de la date de création [ par koma777 ] Bonjour à tous, Je cherche actuellement un programme automatisant la suppression de fichier en fonction d'une date antérieur. En effet, j'ai une camer


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales