Accueil > Forum > > > > Ouvrir un fichier
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|