CreateFile, SetFilePointer,WriteFile,.. ?

maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004 - 2 juil. 2004 à 10:57
maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004 - 2 juil. 2004 à 11:53
Comment faire ca en Win32 (CreateFile, SetFilePointer,WriteFile,...) ?

if((fcry2 fopen(szFileName ,"rb")) NULL)
{
                //erreur donc sorti programme 0 
return 0;
}

l = fgetc(fcry2);  //lecture dans fcry
if (l==37)  // si le fichier commence pas % on l'ouvre directement et sort du sous programme
{
               fclose(fcry2);
 //on ouvre le fichier grâce à ShellExecute
ShellExecute(NULL, "open", szFileName , NULL, NULL, SW_MAXIMIZE);
return 1;
}

else
{
fclose(fcry2);if((fcry2 fopen(szFileName ,"rb")) NULL)
{
                MessageBox(0, szFileName  , "erreur à l'ouverture", MB_ICONEXCLAMATION);			return 0;
}
sprintf(file2,"%s%s",TempDirectory_str,szTitleName);
if((fencry2 fopen(file2,"wb+")) NULL)
{
MessageBox(0, "veuillez vérifier que le fichier c:\temp exite", "erreur à l'ouverture", MB_ICONEXCLAMATION);
fclose(fcry2);
return 2;
}
//on appelle la fonction clefhex
clefhex(clehex,"abcdef");

//système de décodage du fichier
for (i=0;;i++)
{
if (i>3) i=0;
l = fgetc(fcry2);//lecture dans fcry
//si détection de la fin du fichier on arrête le décodage!
if (l == EOF) break;
else
fputc(l-clehex[i],fencry2);//écriture dans fencry
}
//fermeture des deux fichiers
fclose(fcry2);
fclose(fencry2);

5 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 juil. 2004 à 11:10
HANDLE hFIle;
DWORD dwRead, dwWritten;
char sBuffer[2];

hFile = CreateFile(szFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0);
if (hFile == INVALID_HANDLE_VALUE) return 0;

ReadFile(hFile, sBuffer, 1, &dwRead, 0);
if (dwRead != 1) return 0;
sBuffer[1] = 0;
if (sBuffer[0] == '%') {
CloseHandle(hFile);
ShellExecute(NULL, "open", szFileName , NULL, NULL, SW_MAXIMIZE);
return 1;
}

.....

Voila, pas trop le temps (et bocou de flemme) pour finir, mais j'espere ke tu auras compris comment fonctionnent ces fonction ...

++

Alhexman
0
maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004
2 juil. 2004 à 11:23
merci 1000x
0
maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004
2 juil. 2004 à 11:38
en fait je ne comprend pas parfaitement ces deux lignes
1) if (dwRead != 1) return 0; (c'est si jamais il ne pointe pas sur le premier caractère de mon fichier?, est ce qu'il s'incrémente tout seul?)

2) sBuffer[1] = 0; là je ne vois pas du tout!!

est ce que cette commande marche si le fichier n'existe pas ?
faut pas remplacer OPEN_EXISTING par autre chose ??
hFile = CreateFile(szFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0);

dsl je suis nulle :-(
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 juil. 2004 à 11:46
alors la fonction ReadFile va stocker ds dwRead le nombre d'octets lus, donc je verifie simplement kel n'ait pas lu plus d'octets ke desiré ou au contraire aucun !
SBuffer[1] = 0; Une chaine de caractere est tjrs finie par un '\0', ici je place juste le 0 a l'element suivant le premier caractere recupéré (car on ne veu ke le premier).
OPEN_EXISTING permet d'ouvrir un fichier ke s'il existe, ds le cas contraire, CreateFile renverra INVALID_HANDLE_VALUE : je teste la ligne d'apres pour voir si cete fonction ne me renvoie pas ca, si elle me renvoie INVALID_HANDLE_VALUE, je kite...

Voila

+

Alhexman
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maevasa Messages postés 100 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 3 août 2004
2 juil. 2004 à 11:53
oki merci ça s'éclaire bien!
0
Rejoignez-nous