Re: Чтение и запись в файл
От: GrayWolf Россия https://kini24.ru
Дата: 09.01.12 07:50
Оценка: 3 (1)
Здравствуйте, dina89, Вы писали:

D> case WM_COMMAND:

D> switch (LOWORD(wp)) {
D> case IDCANCEL: /* посылается при закрытии диалога по [Esc]*/
D> case ID_EXIT: /* команда меню "ВЫход" */
D> DestroyWindow(hw);
D> break;

Диалоги закрываются по EndDialog().

D> case ID_OPEN: /* команда меню "Открыть" */

D> ....
D> /* открываем файл */
D> hf=CreateFile(filename,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);

Указываете FILE_FLAG_OVERLAPPED, но не указываете структуру. Тут могу ошибаться, асинхронный ни разу не использовал, правлю по памяти.

D> ....

D> len=GetFileSize(hf,NULL);
D> bufr=(PCTSTR*)malloc(len+1); /* доп. байт под символ-терминатор (0) */

Не нравится мне выделение памяти чем-то, хоть убейте. Вероятно тем, что выделяется память под набор строк, а не символов.

D> ReadFile(hf,LPWSTR(bufr),len,NULL,&olr);


Тут можно использовать одну структуру OVERLAPPED, которую вы указали при открытии файла.

D> hf=CreateFile(filename,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);


Аналогично похожей записи на открытие для чтения, "претензия" та же.

D> WriteFile(hf,bufw,sizeof(bufw)+1,NULL,&olw);


И вот тут расхождение: читаете вы unicode, а записываете в ansi. Для unicode-файлов требуется в начало записать два байта-сигнала: 0xFF и 0xFE.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.