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
COPIE DE FICHIER SANS INDIQUER LE CHEMIN COMPLET [ par Batman60 ]
Bonjourje voudrais copier et renommer un fichier vers un dossier sans indiquer le chemin complet pour pouvoir placer le dit dossier n'importe où sur l
probleme dans la lecture d'un fichier [ par jack_ryan ]
bonjour,voila je cherche a ouvrir un fichier bmp et mon code ne semble pas avoir accés a tout le fichier je m'en remet a vous pour savoir si cela est
probleme avec wininet [ par cbarcli ]
voila je veux compiler le code si dessous sous dev-c++ mais ça donne des erreur du genre: [Linker error] undefined reference to `InternetOpenA@20'
ecriture saut de ligne dans un fichier [ par mogwai93 ]
j'essaie d'ecrire un saut de ligne dans un fichier sauf qu'il ne m'ecrit que 0A au lieu de 0D 0A comment corriger ? merci hFile = CreateFile(Mon_
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|