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);
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);
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...