begin process at 2012 05 30 11:13:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

ReadFile


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

ReadFile

mardi 22 juin 2004 à 16:45:36 | ReadFile

samki

Bonjour,
j'aimerai lire un texte dans un fichier,je veux utiliser la fonction ReadFile mais j arrive pas.
Je veux que tt ce qui est lu soit affecter à une variable de type chaine de caractères.
voila mon code:
CString csDetection;
HANDLE hFileDetectTemplate = ::CreateFile(PathDetectTemplate,GENERIC_READ, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if(hFileDetectTemplate != INVALID_HANDLE_VALUE && hFileDetectTemplate != NULL)
{
::ReadFile(hFileDetectTemplate,(LPTSTR)csDetection,strlen((LPCTSTR)csDetection),&dwWritten,NULL);

}
::CloseHandle(hFileDetectTemplate);
ca me fait une erreur au niveau du 2eme paramètres de la fonction ReadFile.
Aidez moi SVP
mardi 22 juin 2004 à 16:54:07 | Re : ReadFile

hilairenicolas


le 3ieme paramètre correspond au nombre d'octet que tu veux lire, pas à la taille de la chaine, donc faut que tu récupperes la taille du fichier

regarde cet exemple

HANDLE hFile;

hFile = CreateFile("test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile == INVALID_HANDLE_VALUE)
return 1;
DWORD dwSize;
dwSize = GetFileSize (hFile, NULL);

if (dwSize == INVALID_FILE_SIZE)
return 1;
char *buffer = new char[dwSize+1];
DWORD bLu;
ReadFile(hFile,buffer,dwSize,&bLu,NULL);

mardi 22 juin 2004 à 17:42:23 | Re : ReadFile

samki

Merci bq pour ton aide,ca marche mais quand j affecte buffer à une chaine de caractère, je trouve des caractères ajouté dans la chaines.
voila mon code:

csHeader=buffer;
if(hFileDetection != INVALID_HANDLE_VALUE && hFileDetection != NULL)
{
::WriteFile(hFileDetection,(LPCTSTR)csHeader,strlen((LPCTSTR)csHeader),&dwWritten,NULL);

}
::CloseHandle(hFileDetection);
je comprends pas pq

mardi 22 juin 2004 à 19:19:24 | Re : ReadFile

hilairenicolas


tu n'es pas obligé d'utiliser buffer, tu peux mettre un CString au lieu d'un char*

sinon à quel endroit est-ce qu'il t'affiche des caractères bizarres ? dans le CString ? dans le fichier écrit (hFileDetection) ?

tu serais pas en UNICODE par hasard ?
mardi 22 juin 2004 à 22:17:25 | Re : ReadFile

ymca2003

il faut pas oublier de rajouter le nul de terminaison pour former une chaine C valide :
buffer[dwSize] = '\0';
mardi 22 juin 2004 à 22:23:39 | Re : ReadFile

hilairenicolas


il peut y en avoir des '\0' dans un fichier, c'est pas pour ca qu'on veut forcément s'arreter au premier '\0' ; mieux vaut à mon avis traiter la chaine en fonction de sa taille qu'on a obtenu avec GetFileSize
mercredi 23 juin 2004 à 00:01:21 | Re : ReadFile

ymca2003

oui mais il me semble qu'il veut affecter le buffer lu dans un CString, il faut donc rajouter un nul à la fin pour terminer la chaîne car sinon on risque d'aller recopier des caractères non valides
mercredi 23 juin 2004 à 09:42:08 | Re : ReadFile

hilairenicolas


ouais mais s'il fait une affectation et qu'il y a plusieurs \0 dans la phrase, il copiera jusqu'au premier, en oubliant la suite.
Mieux vaut je pense utiliser un memcpy avec la taille qu'on a obtenu avec GetFileSize
mercredi 23 juin 2004 à 10:46:54 | Re : ReadFile

samki

Il m'affiches des caractères bizarres dans le fichier écrit,alors j'ai fait ca:
HANDLE hFileTemplateDetect = ::CreateFile(PathTemplateDetect,GENERIC_READ, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwSize;
dwSize = GetFileSize (hFileTemplateDetect, NULL);
char *buffer = new char[dwSize-4];
DWORD bLu;

if(hFileTemplateDetect != INVALID_HANDLE_VALUE && hFileTemplateDetect != NULL)
{
::ReadFile(hFileTemplateDetect,buffer,dwSize,&dwWritten,NULL);

}
::CloseHandle(hFileTemplateDetect);
ca marche mais quand j'ai essayé de faire une fonction avec ce code et de l'appeler pour des fichiers differents alors il me fait sortir une boite de dialogue avec "Mémoire insuffisante" c'est surement du à le "-4" que j'ai ajouté.mais autrement ca ne marche pas
mercredi 23 juin 2004 à 11:08:34 | Re : ReadFile

samki

j ai aussi essayé d'ajouer buffer[dwSize] = '\0'; mais ca marche pas

1 2

Cette discussion est classée dans : fonction, handle, readfile, hfiledetecttemplate, csdetection


Répondre à ce message

Sujets en rapport avec ce message

Thread & fonction [ par youpiyoyo ] j'aimerai savoir comment et par qu'elle fonction je peux à partir d'un thread lancé une fonction. éternel probleme souvent posé comme post dans le for Problème pour passer un tableau dynamique à une fonction [ par muguss ] Je n'arrive pas à passer parfaitement mon tableau dynamique de type HANDLE à ma fonction afin que cette dernière ajoute un HANDLE au tableau, donc l'a recuperer handle [ par morgandetoi06 ] bonjour,quelle est la fonction pour recuperer le handle d une fenetre en se servant de argv[0] svp?et aussi comment la cacher avec la fonction showwin pointeur et handle [ par yerosnimus ] Bonjour, bon, je suis débutant et surtout autodidacte en programmation. J'essaie de comprendre actuellement l'utilisation d'un pointeur avec une fonc quelle fonction pour avoir le handle afin de crée un objet directinput ? [ par vini456 ] bonjour ,quelle est la fonction pour avoir le handle de ma winmain afin de crée un objet directinput ? [.net c++] fermeture d'un handle [ par stgi02 ] bonsoir,je prog sur VS.net c++dans mon programme, j' ai récupéré le handle du formulaire car j' en avais besoin pour une fonction, mais est ce que je handle de Createfile ET writefile [ par oudkaramla ] salut tout le mondej'ai un pepin avec le HANDLE DE createfile, en effet malgré que j'ai déclaré le handle comme variable globale, il perds sa valeur e Recuperation d'un handle de fenetre [ par coframi ] je lance une application avec la fonction CreateProcess.Il faut que je recupére le handle de fenetre associe pour pouvoir masquer ou afficher cette ap récupération HANDLE d'un Process [ par LaPatoshe ] Salut, sur les conseils de Brunews dans le cadre de ma recherche sur le sous classement, je tente d'utiliser la fonction CreateRemoteThread afin de po Utilisation de fonctions Callback [ par N0euX ] Bonjour a tous,</o:


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,374 sec (3)

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