Accès aux fichiers

Résolu
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007 - 3 sept. 2006 à 21:21
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 10 sept. 2006 à 19:16
Bonsoir,

Par avance je m'excuse si ma question est un écho à un sujet deja evoqué sur ce site.
Je souhaite manipuler en asm un fichier texte.
Pouvoir lire ce qu'il y a dedans et le récuperer lettre par lettre pour le reécrire ailleurs..dans un autre fichier par exemple...
L'ideal serait d'ouvrir le fichier en binaire j'ai l'impression.

Si vous avez des bouts de codes, des exemples ou des liens ce serait vraiment très explicite de cette manière 

Merci par avance, je continue à chercher de mon côté.

cdt,

6 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
4 sept. 2006 à 09:25
Bonjour tezca_system,


si tu veux un exemple de manipulation de fichiers, ouverture, lecture, écriture, tu peux examiner ma source
http://www.asmfr.com/codes/PROGRAMME-VISUALISATION-ANALYSE-SPECTRALE-FICHIERS-SONS_35923.aspx
Le choix du fichier s'effectue via l'explorateur de fichiers avec l'API GetOpenFileName.
L'ouverture du fichier avec l'API CreateFile et la lecture du fichier avec ReadFile.
 
Pour l'enregistrement on utilise l'API GetSaveFileName, l'ouverture se fait avec CreateFile et l'écriture avec WriteFile.

Seules les API CreateFile et Read/WriteFile sont indispensables. Les deux API GetOpenFileName et GetSaveFileName te permettent de faire apparaitre les deux boites de dialogue qui te permettent de choisir les noms de fichier. Le nom du fichier, le chemin d'accès les extensions sont enregistrés dans une structure OPENFILENAME.


CreateFile a seulement besoin du nom de fichier à manipuler (plus des attributs à indiquer).

A+
3
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
6 sept. 2006 à 15:25
Salut,
Pour manipuler des fichiers textes,inutile de réinventer la lune.
Un exemple avec tout ce qu'il faut
creer index pour le html help workshop
Le commentaire est en anglais mais en cas de question,posez la içi
Si par hasard il manque un source,voir mon site.
               ToutEnMasm
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 sept. 2006 à 00:44
salut,




2 solutions possibles:
1 - creer un file mapping qui te permettra d'acceder au fichier par simple acces memoire. (CreateFileMapping, MapViewOfFile)
2 - methode par buffer ( ReadFile,SetFilePointer,... ) qui suppose la mise en oeuvre d'un index.

recherche sur msdn, tape ces noms de fonctions dans google.
@++
3
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007
4 sept. 2006 à 00:46
Je suis sur la bonne voie je viens d'ecrire cela:

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib


 


.data
filename db "exemple.txt"




.data?
fileHandle HANDLE ?


.code
start:
        invoke CreateFile,\
  ADDR filename,\
  GENERIC_WRITE,\
                FILE_SHARE_WRITE,\
                NULL,\
  OPEN_EXISTING,\
  FILE_ATTRIBUTE_NORMAL,\
                NULL
 
 mov fileHandle, eax


        invoke CloseHandle, fileHandle
 
 invoke ExitProcess,0


 


end start
0

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

Posez votre question
tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007
10 sept. 2006 à 15:33
Vraiment sympa ces 3 reponses elles sont complémentaires. Je recommande ce post pour tout ceux qui veulent manipuler les fichiers.

merci
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
10 sept. 2006 à 19:16
salut,



petite precision par rapport a ce que j'ai écrit:
tu pourrait etre amené a utiliser un index avec un file mapping si ton fichier est vraiment enorme.
et tu pourrais ne pas utiliser un index avec ReadFile en combinant ces 3 fonctions:
GetFileSize
VirtualAlloc
ReadFile

@++
0
Rejoignez-nous