begin process at 2012 05 30 01:15:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Ouvrir un fichier


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

Ouvrir un fichier

jeudi 24 août 2006 à 02:34:14 | Ouvrir un fichier

Ziman

Bonjour (enfin bonsoir dans le cas présent),

j'apprend pour l'instant l'API WIN32 et j'ai décidé de faire un mini traitement de texte histoire d'apprendre un peu de tout. En fait, là j'ai réussi à afficher une boite de dalogue "ouvrir un fichier" tout seul :p (hum), et maintenant je me demandais comment mettre le contenu du fichier dans l'edit.

J'utilise pour l'instant un edit, j'essayerai après avec un richedit. Mais euh, j'ai pensé à une technique barbare qui consistait à récupérer la taille du fichier et lire par segment de 1024 caractères jsuqu'à la fin du fichier avec une gestion de la dernière chaine qui sera plus courte que 1024. C'est possible mais assez barbare.

Existe-t-il une solution "normale" ou est-ce que dans mon délire j'aurais trouvé la solution générale ?

Apprendre le VB6
jeudi 24 août 2006 à 03:02:45 | Re : Ouvrir un fichier

SAKingdom

Membre Club
Tu utilise quoi? ReadFile? Dans ce cas, tu peux utiliser GetFileSize pour récupérer la taille du fichier. Si la taille est résonnable, tu peux faire un buffer de cette taille pour grâce à ReadFile, récupérer d'une seule fois tout le contenue du fichier et le placer dans le buffer puis ensuite le transférer dans ton edit. Sinon, si le fichier est trop gros, tu peux faire comme tu dit, par section. Cependant, pas besoin de faire de gestion de la dernière chaine plus courte. Le quatrième paramètre de la fonction retourne le nombre de caractère lue. Tu n'a qu'à prendre cette valeur pour copier le contenue d'un petit buffer.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation

jeudi 24 août 2006 à 03:06:11 | Re : Ouvrir un fichier

Ziman

Ah ui tiens, bonne solution. J'avais pensé pour le petite contenu. Je vais pour l'instant adopter ta solution, mais je ne vais pas tout de suite l'accepter juste pour voir si personne n'a une meilleure solution.

Merci de ton aide ...

Apprendre le VB6
jeudi 24 août 2006 à 05:03:44 | Re : Ouvrir un fichier

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Ziman >> Tu peux accepter plusieurs réponses.
A propos du chargement de ton fichier dans l'Edit, pourquoi le fragmenter? Tu peux le charger d'un seul coup. C'est plus rapide et efficace. Voici comment procéder:
- Ouvre ton fichier avec CreateFile().
- Obiens sa taille avec GetFileSize().
- Utilise HeapAlloc() pour créer un buffer de la taille du fichier + 1.
- Utilise ReadFile() pour remplir le buffer avec le contenu du fichier.
- Mets "\0" dans le dernier élément du buffer pour marquer la fin de la chaîne.
- Utilise SetWindowText() pour afficher le contenu du buffer dans ton Edit.
- Libère le HANDLE de  ton fichier avec CloseHandle().
- Libère la mémoire allouée au buffer avec HeapFree().

jeudi 24 août 2006 à 11:19:51 | Re : Ouvrir un fichier

wxccxw

Membre Club
racpp repond toujours plus vite que moi ^^
tu a plusieurs cours pounvent t'interesser :

c.developpez.com/Cours/
regarde a API Windows
il y 2 cours (bob et CGI)

voila bonne chance


jeudi 24 août 2006 à 14:15:05 | Re : Ouvrir un fichier

Ziman

Je vois je vois. En fait je pensais le fragmenter car si celui-ci est très gros, ca va bouffer de la mémoire. Tout d'un coup quoi, si je fragmente par morceau de 1024, ca ne prendra qu'un Ko à chazque passage de boucle.

Ensuite, quelle est la différence entre HeapAlloc et malloc ?

racpp > J'ai fait exactement ce que tu m'as dit mais avec la fragmentation et ca marche niquel :p

Apprendre le VB6
jeudi 24 août 2006 à 14:51:56 | Re : Ouvrir un fichier

SAKingdom

Membre Club

C'est drôle mais j'ai répondue la même chose que racpp quelques posts plus haut. C'est à croire qu'il ne lit pas les messages précédent ;)

malloc n'a pas vraiment de différence avec HeapAlloc car d'après mes souvenirs, sous Windows, malloc finis par utiliser HeapAlloc en bout de ligne.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation

jeudi 24 août 2006 à 14:59:03 | Re : Ouvrir un fichier

racpp

Administrateur CodeS-SourceS
Bonjour,
Ce ne sont que des fichiers texte, donc je ne pense pas qu'ils soient très gros. La mémoire allouée avec HeapAlloc() sera aussiôt libérée avec HeapFree() une fois le fichier chargé.
Puisque tu veux travailler en API, tu devrais utiliser HeapAlloc() car cette dernière est justement une API. malloc() est une fonction du C standard.

jeudi 24 août 2006 à 15:07:14 | Re : Ouvrir un fichier

vecchio56

Administrateur CodeS-SourceS
SAKingdom> C'est la réponse de racpp qui a été acceptée parce que sa mise en page est meilleurs et qu'on plus envie de lire son message que le tien ;)
Autre chose: la taille du fichier peut être raisonnable, mais en aucun cas "résonnable"

_____________________________________
Un éditeur de ressources gratuit pour Windows

jeudi 24 août 2006 à 15:07:44 | Re : Ouvrir un fichier

SAKingdom

Membre Club
De plus, malloc te liera au CRT qui alourdira ton programme. Donc en effet, utilise HeapAlloc. Cependant, à moin que HeapAlloc fonctionne sans, tu devra créé la plage mémoire avec HeapCreate avant d'utiliser HeapAlloc et la supprimer avec HeapDestroy. Généralement, tu créé cette plage au début et la supprime à la fin du programme. Il existe aussi VirtualAlloc mais je crois que c'est pour de plus grosse somme de mémoire.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation


1 2

Cette discussion est classée dans : fichier, ouvrir, edit, apprendre, instant


Répondre à ce message

Sujets en rapport avec ce message

fichier textedans edit box [ par rodrigos ] Bonjour, je suis nouveau dans la programmation c++, et j'aimerai savoir comment afficher un fichier texte dans un dialog box.j'utilise cette fonctionS ouvrir un fichier texte [ par kawazaki ] Salut Je voudrais ouvrir un fihier texte et ecrire a l'interieur puis faire la sauvegarde sur le disque.comment je procéde?merci pour la réponse Comment ouvrir la fenetre Windows "Ouvrir Fichier" en C++ ? [ par Pol Hochon ] Salut !J'ai un problème pour un projet de C++.J'aimerais bien connaitre l'instruction en C++ quipermet d'ouvrir la boite de dialogue Windows "Ouvrir" ouvrir un fichier en base de 81 !! [ par Xs ] salut !!tout le monde connait l'hexadecimal ?bon ben, l'hexa, lui il marche en base de 16.eh bien moi, je voudrais ouvrir un fichier, jusque la je sai Enregistrer/ouvrir fichier vc++ 6 [ par apientry ] Au secours!J'ai un gros probleme, je n'arrive pas à enregistrer un fichier (txt par ex), comment faire? je sais comment apeler la boite de dialogue, G telecharger un fichier [ par Xs ] On fait comment pour telecharger un fichier ?je suppose qu'il faut demander au serveur de l'ouvrir en binaire puis utiliser une boucle du typewhile(!f Peut-on ouvrir un fichier dans le même répértoire que l'exécutable ? [ par guiroux22 ] Peut-on ouvrir un fichier dans le même répértoire que l'exécutable ? Si oui Comment ?Merci Lire un fichier sous visual c++ sans l'ouvrir!! [ par motus ] "sans l'ouvrir", c'est une faon de parler... En fait, suite un drag&drop, j'ouvre le fichier "dragg" pour rcuprer certaines parties du texte l'intri ouvrir un fichier Excel avec 'C plus plus ' [ par cvi ] Mon problème est d'ouvrir un fichier excel d'après une interface créer à l'aide de visual C"plus plus" 6.0.Le but est d'ouvrir un fichier avec un bout Ouvrir un fichier à la "Windows" [ par CyberP ] Comment afficher la boite de dialogue de choix de fichier classique de windows ? (ex : dans Word, si l'on fait fichier -> ouvrir, une boite de dialogu


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 : 0,608 sec (4)

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