Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Записать в файл текст из Edit в юникоде |
Автор: Chewits 4.11.2010, 17:20 | ||||
Пишу что-то типа простейшего текстового редактора. Написал функцию вызова диалога сохраненя файла (как это рекомендуется делать для последних версий windows)
Она возвращает дескриптор на открытый файл, с которым потом работаю при получении сообщения от кнопки "Сохранить". Есть кроме этого также контрол типа "edit", в нём текст, который и нужно сохранить. Вот код, который выполняется при получении сообщения от кнопки:
При записи вместе с каждым символом записывается еще один байт, какой-то лишний, как я понимаю, например ввожу в "edit": "test. test. test." (17 символов), в файл записывается "tNULeNULsNULtNUL.NUL NULtNULeNULs" (если смотреть в Notepad++) Если по-русски вводить "тест. тест. тест.", то и с самими символами проблемы, получится "BEOT5EOTAEOTBEOT.NUL NULBEOT5EOTA" Куда смотреть, что добавить, чтобы правильно работало с юникодом (или, правильнее, с широкими символами)? |
Автор: Alca 4.11.2010, 18:16 |
Можно Юникод перегнать в АНСИ. P.S. WriteFile пишет побайтово, а не посимвольно. |
Автор: Estranged 5.11.2010, 18:04 |
http://msdn.microsoft.com/en-us/library/ms633521%28VS.85%29.aspx см Return Value и Remarks. Неправильный размер передается в WriteFile. |
Автор: bass 8.11.2010, 20:10 |
Builder 100% работает. String Buff =Form1->Edit1->Text; WriteFile(hf, &Buff[1], Buff.Lenght, &dwBytesWritten, NULL)) |
Автор: xvr 8.11.2010, 21:39 |
Под 2010 проверьте, вас ждет много удивительного ![]() |
Автор: Chewits 9.11.2010, 00:18 | ||
Спасибо всем) дописал примерно следующее:
работает ![]() |
Автор: xvr 9.11.2010, 10:54 | ||
По желанию.
|