Accueil > Forum > > > > Pb Edition de Texte !!!
Pb Edition de Texte !!!
mardi 4 novembre 2008 à 15:59:29 |
Pb Edition de Texte !!!

ElectricalMan
|
Bonjour, j'ai un petit soucis en voulant sauvegarder le contenu d'une EditBox dans un fichier; j'ai que la moitier du contenu qui est sauvegardé !
OPENFILENAME ofn; TCHAR szFile[_MAX_PATH]={0};
ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = L"Fichiers Texte(*.TXT)\0*.txt\0Tous les fichiers(*.*)\0*.*\0"; ofn.nFilterIndex = 0; ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
if (GetSaveFileName(&ofn)==TRUE) { HANDLE hFile, hBuffer; DWORD FileSize, nbcharRead=0 ; FileSize = GetWindowTextLength(hWndEdit); hBuffer = (HANDLE)SendMessage(hWndEdit, EM_GETHANDLE, 0, 0L); hBuffer = LocalLock(hBuffer); hFile = CreateFile(szFile, GENERIC_READ|GENERIC_WRITE, 0,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); WriteFile(hFile, hBuffer, FileSize, &nbcharRead, NULL) ; wsprintf((LPWSTR)szBuffer,L"%d",nbcharRead); MessageBox(NULL, (LPCWSTR) szBuffer, (LPCWSTR)L"nbcharRead", MB_OK); => pourtant ça donne la longueur correct CloseHandle(hFile); LocalUnlock(hBuffer); }
Avez vous une idée ?
|
|
mardi 4 novembre 2008 à 18:42:21 |
Re : Pb Edition de Texte !!!

uaip
|
Jette un oeil ici. J'ai appris avec ça et je n'ai jamais eu de problème. Cordialement, uaip.
|
|
mardi 4 novembre 2008 à 22:31:37 |
Re : Pb Edition de Texte !!!

racpp
|
Salut, Il parait que tu en Unicode. Dans ce cas GetWindowTextLength() te retournera le nombre de caractères de l'Edit. Or, le buffer retourné par le message EM_GETHANDLE est deux fois plus grand car chaque caractère en Unicode occupe deux octets. WriteFile() sauvera donc seule la première moitié du buffer. Pour que to Edit ne soit pas Unicode, crée le avec CreateWindowExA(). Bien noter le A à la fin du nom de la fonction.
|
|
mercredi 5 novembre 2008 à 02:08:13 |
Re : Pb Edition de Texte !!!

julienbj
|
Tu peux aussi sauvegarder ton message en unicode dans le fichier. Auquel cas, tu n'as qu'à faire FileSize * sizeof(TCHAR) dans ton WriteFile. Ainsi, sera bon si tu compiles en Unicode ou en ASCII. --Vive le CSavon
|
|
mercredi 5 novembre 2008 à 03:36:34 |
Re : Pb Edition de Texte !!!

racpp
|
julienbj >> Oui mais de cette façon son fichier ne sera pas vraiment Unicode car le premier caractère ne doit pas être à la 1ère position mais plutôt à la 3ème. Les deux premiers octets d'un fichier texte Unicode sont 0xFF et 0xFE qu'il faudra mettre avant d'ajouter le texte.
|
|
mercredi 5 novembre 2008 à 10:04:47 |
Re : Pb Edition de Texte !!!

ElectricalMan
|
super les mecs, merci ça marche nickel :) racpp >> je m'en doutais bien que ça clochait qq part à cause de l'UNICODE julienbj >> ça marche bien aussi ta solution, même si, comme disait "racpp", pour respecter la norme Unicode il faut rajouter le marqueur de l'ordre du flux. C'est le BOM (Byte Order Mark) qui vaut 0xFEFF et sera représenté 0xFF 0xFE sur une machine little endian Windows et 0xFE 0xFF sur les machines big endian. Ce marqueur est indispensable pour qu'un fichier texte soit vu comme fichier Unicode, même si ça marche sans chez moi ! ça doit permettre donc de décoder correctement les caractères Unicode. Donc au niveau de mon code : ... #ifdef UNICODE WCHAR BOM = 0xFEFF ; WriteFile(hFile, &BOM, sizeof(BOM), &nbcharRead, NULL) ; WriteFile(hFile, hBuffer, FileSize * sizeof(TCHAR), &nbcharRead, NULL) ; #endif ...
Une question : qu'est ce qui est plus interresant AINSI ou UNICODE ?
|
|
mercredi 5 novembre 2008 à 11:01:03 |
Re : Pb Edition de Texte !!!

ElectricalMan
|
ou bien faudrait il mettre de la compilation conditionnelle partout pour avoir qq chose de générique ?
|
|
mercredi 5 novembre 2008 à 18:37:20 |
Re : Pb Edition de Texte !!!

racpp
|
Puisque c'est pendant l'exécution que ça se passe, et non pas à la compilation, je pense qu'il est préférable d'utiliser IsWindowUnicode() pour déterminer si le controle est Unicode ou non. L'intérêt de l'Unicode réside dans le support multilingue. En effet, il permet aux applications de pouvoir utiliser toutes les langues de la planète. Son inconvénient est d'occuper deux fois plus d'espace, disque ou mémoire, que l'ANSI. N'utiliser Unicode donc que quand c'est indispensable.
|
|
mercredi 5 novembre 2008 à 20:11:38 |
Re : Pb Edition de Texte !!!

julienbj
|
Pour l'écriture en Unicode, je suis d'accord sur le principe, il faut mettre un BOM si le fichier doit être partagé par différentes applis, entre différents utilisateurs, ... Si il s'agit d'un fichier de config propre à une appli, pourquoi mettre le BOM? Plus compliquer à écrire et à relire... racpp >> Qu'est-ce qui permettra de choisir entre réaliser une appli en UNICODE ou en ANSI? Les performances sont-elles les mêmes? --Vive le CSavon
|
|
mercredi 5 novembre 2008 à 23:25:06 |
Re : Pb Edition de Texte !!!

racpp
|
julienbj >> Personnelement je n'utilise Unicode que pour les applications multilingues. Surtout quand il s'agit de langues totalement différentes. Pour les performances, Unicode serait préférable dans certains cas. Les systèmes NT étant essentiellement Unicode il est plus direct d'appeler les versions Unicode des fonctions au lieu des versions ANSI puisque ces dernières ne font que traduire en Unicode les chaines passées en paramètres avant de les rediriger vers les premières. Cette traduction et cette redirection coûtent beaucoup de cycles au processeur surtout quand c'est répétitif.
|
|
Cette discussion est classée dans : ofn, hfile, szfile, hbuffer, nbcharread
Répondre à ce message
Sujets en rapport avec ce message
[API WIN32] Problème d'écriture dans un fichier [ par elchevive ]
Salut à tous, j'ai un petit problème avec une fonction qui est censée écrire dans un fichier le contenu de l'edit d'une fenêtre MDI. Il créer le fich
Problemes pour formatter le nom de mes fichiers a ouvrir [ par pif56 ]
Bonjour,Voila j aimerais pouvoir, au sein d une boucle while, ouvrir une famillede fichiers textes appeles "i.txt" oú i est un entier parcourant [0,4]
ouvrir une image [ par doudouhic ]
Bonjour, J'essaye de charger une image à partir du disque dure en utilisant les MFC. j'utilise le code suivant: OPENFILENAME ofn; // common dialog box
GetOpenFileName [ par piroman14 ]
Salut!j'ai un problème avec GetOpenFileNamej'en utilise deux et je n'arrive pas à faire fonctionner le premier des deux je crois qu'il faut utiliser u
WriteFile => caractères non reconnu dans le fichier [ par Flo1987 ]
Bonjour,J'ai un problème avec la fonction WriteFile : je cherche à écrire un tableau de double dans un fichier mais je retrouve des caractères non rec
(win32)Fichier et buffer en lecture seule [ par mogwai93 ]
Bonjour Je voudrais lire un fichier, placer le contenu de ce fichier dans un buffer et modifier ce buffer (mais pas le fichier). J'arrive bien à ou
aidez moi svp [ par romain4700 ]
salut tou le monde romain 19ans debutans c++ avec devc++ et microsoft visual c++ jai un problem je ne sais pas comment fair pour inseret un image dan
BeginUpdateResource fail [ par zod331 ]
bonsoir; L'appel de la fonction BeginUpdateResource marche tres bien en temp normal mais quand je fai appel a GetOpenFileName, BeginUpdateResource ne
Problème avec GetOpenFileName [ par ArthurAuguste ]
Bonjour, J'ai un problème avec GetOpenFileName si et seulement si le fichier que j'ouvre fait plus de 93Ko !!!! Si j'ai fait une erreur de programma
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|