begin process at 2012 05 29 16:43:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Prob Création de plusieurs fichiers


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

Prob Création de plusieurs fichiers

mardi 24 août 2004 à 17:26:37 | Prob Création de plusieurs fichiers

malik7934

Hello!

J'ai un programme qui crée et remplit un fichier texte ainsi:


hDestFile = CreateFile("C:/WINDOWS/Temp/this-is-a-temporary-file.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hDestFile == INVALID_HANDLE_VALUE)
{
delete[] szSrc;
CloseHandle(hDestFile);
return FALSE;
}

Après emploi, je fais un closeHandle et tout va bien...
Pour des raisons pratiques, j'ai voulu créer deux autres fichiers:

Public_Key = CreateFile("C:/WINDOWS/Temp/public_key.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(Public_Key == INVALID_HANDLE_VALUE)
{
delete[] szSrc;
CloseHandle(Public_Key);
return FALSE;
}

Secret_Key = CreateFile("C:/WINDOWS/Temp/secret_key.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(Secret_Key == INVALID_HANDLE_VALUE)
{
delete[] szSrc;
CloseHandle(Secret_Key);
return FALSE;
}


Mais ça plante systématiquement!

Est-ce que quelqu'un a déjà eu ce genre de problèmes? Peut-être que j'initialise mal mes fichiers... ou peut-être que la vérité est ailleurs

HELP!

Thanx, Malik7934
mardi 24 août 2004 à 17:52:28 | Re : Prob Création de plusieurs fichiers

youpiyoyo

pourkoi tu fais 2 fois createfile sur Secret_Key, 1 suffi

ca a l'air bien, il te di koi le compilo

sinon fais ca a l'ancienne FILE* f1,f2;
avec fopen

youpi :)
mardi 24 août 2004 à 18:12:35 | Re : Prob Création de plusieurs fichiers

malik7934

Salut Youpi,

Ben le compilo il me dit que tout beigne! Mais quand j'exécute mon application, boum, ça bug!

Avec seulement le fichier hDestFile, ça beigne, ensuite si je mets Public_Key et Secret_key, vides (juste créés, c'est tout), ben ça plante! Je me suis demandé s'il y avait un rapport avec un paramètre de CREATEFILE, mais no idea... un problème de concurrence entre processus??? Je sais pô... je sais juste que j'avance pas dans mon boulot à cause de ça :-(
mardi 24 août 2004 à 18:23:40 | Re : Prob Création de plusieurs fichiers

Arnotic

Administrateur CodeS-SourceS
aulieu de C:/WINDOWS/Temp/public_key.crypt
C:\\WINDOWS\\Temp\\public_key.crypt
n'aiderai pas ?

@+
Arnotic,
Admin CS, MVP Visual C++
mardi 24 août 2004 à 18:28:17 | Re : Prob Création de plusieurs fichiers

malik7934

Alors là je sais pas (je suis plus dans mon labo là), pis je vois pas la différence! Je peux juste dire que ça marchait très bien avec des "/" pour 1 fichier... mais comme l'informatique c'est un peu une profession de foi, j'essaierai ce que tu me dis demain matin!

Thanx, Malik7934
mardi 24 août 2004 à 18:32:50 | Re : Prob Création de plusieurs fichiers

jpthomasset

Salut,

A quel endroit ca plante exactement ? Sur le CreateFile ? Il te renvoit un handle invalide ? Si oui, que vaut le résultat de GetLastError() ?

A+,
JP.
mardi 24 août 2004 à 18:42:10 | Re : Prob Création de plusieurs fichiers

malik7934

Non, c'est beaucoup plus subtil que ça:

Dans mon prog, à un endroit je fait des manips sur des chiffres et je dis de stocker les résultats dans hDestFile. Plus loin, d'autres manips que je fais étaient aussi stockées dans hDestFile, mais pour des raisons pratiques, j'ai voulu les stocker dans Public_Key. Donc, j'ai créé le fichier et ai dit à mon prog de stocker mes résultats là. C'est là que ça à commencé à planté. Après avoir passé facilement 2-3h à chercher le bug, je me suis rendu compte que dès que je crée plus qu'un fichier, mon algorithme plante. Pourtant il n'y a aucune variable en commun!

Ensuite, j'ai même essayé d'éliminer tout ce qui devrait être stocké ailleurs que dans hDestFile, tout en créant Public_Key et Secret_Key et en les laissant vies. Résultats: ça plante (mon code). Sans la déclaration de création de ces deux fichiers, ça marche!!!! C'est n'importe quoi non???!!

Maintenant que j'y pense, il y a peut-être un rapport avec la taille des fichiers. Faudra que je regarde ça demain. Mais si en attendant quelqu'un à sous la main un code qui crée deux fichiers et qui y écrit des trucs, ben moi je dis volontiers merci que je puisse faire un double check!

See you,
Malik7934
mardi 24 août 2004 à 21:00:36 | Re : Prob Création de plusieurs fichiers

jpthomasset

Je viens de faire un test, parce que ton truc m'etonne et ca marche sans problème.

Ou est-ce que ton code plante ? Est-ce que tu as essayé de debugger ? C'est difficile de savoir ce qui se passe sans savoir ou se situe le plantage.

Pour info, voila le code que j'ai utilisé :



int main(int argc, char* argv[])
{
DWORD dBytesWritten;
char *writeBuffer = "Test de données !";


HANDLE hDestFile = CreateFile("C:/WINDOWS/Temp/temp.crypt",
GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hDestFile == INVALID_HANDLE_VALUE)
{
CloseHandle(hDestFile);
return 1;
}

if(!WriteFile(hDestFile,writeBuffer,strlen(writeBuffer),&dBytesWritten,NULL)) {
printf("Erreur writing to temp\n");
}

HANDLE hDestFile2 = CreateFile("C:/WINDOWS/Temp/temp2.crypt",
GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hDestFile2 == INVALID_HANDLE_VALUE)
{
CloseHandle(hDestFile2);
return 1;
}

if(!WriteFile(hDestFile2,writeBuffer,strlen(writeBuffer),&dBytesWritten,NULL)) {
printf("Erreur writing to temp2\n");
}

HANDLE hDestFile3 = CreateFile("C:/WINDOWS/Temp/temp3.crypt",
GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hDestFile3 == INVALID_HANDLE_VALUE)
{
CloseHandle(hDestFile3);
return 1;
}

if(!WriteFile(hDestFile3,writeBuffer,strlen(writeBuffer),&dBytesWritten,NULL)) {
printf("Erreur writing to temp3\n");
}


CloseHandle(hDestFile);
CloseHandle(hDestFile2);
CloseHandle(hDestFile3);

return 0;
}



A+,
JP.
mercredi 25 août 2004 à 08:22:46 | Re : Prob Création de plusieurs fichiers

malik7934

Thanx pour l'exemple, mais le problème persiste:

Dans mon code j'ai:


...
hDestFile = CreateFile("C:/WINDOWS/Temp/this-is-a-temporary-file.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hDestFile == INVALID_HANDLE_VALUE)
{
delete[] szSrc;
CloseHandle(hDestFile);
return FALSE;
}
/*
Public_Key = CreateFile("C:/WINDOWS/Temp/public_key.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(Public_Key == INVALID_HANDLE_VALUE)
{
CloseHandle(Public_Key);
return FALSE;
}

Secret_Key = CreateFile("C:/WINDOWS/Temp/secret_key.crypt",GENERIC_WRITE,NULL,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(Secret_Key == INVALID_HANDLE_VALUE)
{
CloseHandle(Secret_Key);
return FALSE;
}
*/
...
if(!ReadFile(hSrcFile,szData,dwFileSize,&dwO,0))
{
delete[] szSrc;
delete[] szData;
CloseHandle(hSrcFile);
CloseHandle(hDestFile);
/* CloseHandle(Public_Key);
CloseHandle(Secret_Key);*/
return FALSE;
}
...
bRet = WriteFile(hDestFile,"PWD1:",5, &dwO,0);
...
delete[] szData;
CloseHandle(hSrcFile);
CloseHandle(hDestFile);
/* CloseHandle(Public_Key);
CloseHandle(Secret_Key);*/

return bRet;
}


et tout beigne, aussi longtemps que je laisse les commentaires /*...*/, mais dès que je les enlève (càd que je mets le code de Public_Key et Secret_Key), le programme bug... y a de la magie non?
Deux type de bug: Soit leprogramme retourne tout de suite bRet=FALSE, soit il tourne un moment avant de planter sur un WriteFile(hDestFile...)

La haine...
mercredi 25 août 2004 à 08:26:02 | Re : Prob Création de plusieurs fichiers

malik7934

STOP!!!!

Je me rends compte que j'arrive à faire planter mon programme (en faisant un effort ( ) avec un seul fichier! Donc je vais d'abord voir ça...

Une question de méga-débutant que je suis: comment utilise-t-on le débogueur (VC6)???

1 2

Cette discussion est classée dans : code, file, fichiers, key, closehandle


Répondre à ce message

Sujets en rapport avec ce message

Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM Problème de lecture [ par Hades53 ] Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern problèeme avec fscanf() [ par xkindool ] Désolé de poster un message pour si peu mais je n'arrive pas a débugger :/Mon prog ne marche pas, il est simplement censé afficher les lignes d'un fic faire sans passer par les fenêtres [ par oudkaramla ] J'ai aussi un autre soucis; j'ai deus codes exemples le premier pour prendre une photo ( à l'aide d'un appareil photo piloté par ordinateur) en format Besoin de quelques renseignements en C++ [ par F_o_X ] Bonsoir a tousJe suis nouveau sur se forum, je tiens d'abord a félécité les webmasters du site pour la qualité de celui-ci. Je programme depuis enviro Difference entre deux fichiers [ par LordBob ] Bonjour a tous, voila je viens de constater quelque chose de bizar et j'aimerais que m'éclaireriez sur un phénoméne que je viens de constater. en fait Evenements clavier en local... [ par bdkiller ] Bonjour tout le monde!Je m'excuse, car il y a pas mal de messages et sources à ce sujet, mais j'ai quand meme un probleme urgent a resoudre...Je suis Erreurs de compilations bizarres avec Visual C++ 6 [ par VTS_35 ] Bonjour,G encore des problèmes de compilation avec mon programme. Je me suis rendu compte que le programme allait devenir balaise, alors j'ai décidé d editer les cellules d'une TStringGrid [ par MLine ] LO,J'ai permis a l'utilisateur d'éditer la TStringGrid (C++ Builder 5) avec goEditing, et je n'accepte dans les cellules que des 0 et des 1 avec le bo Code source incomplet en C [ par Sneakito ] Je suis un débutant, or j'ai un programme assez complexe à réaliser(pour moi), voici ce qu'il doit faire:Remplacer un mot dans une page html (hors bal


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,576 sec (4)

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