Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42

Работа с файлами

18.03.2013, 01:45. Показов 1552. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Инициализирую переменные -
C++
1
2
3
4
char* filename[MAX_PATH]; //Путь к файлу
OPENFILENAME FileName;
char * buffer;//Буфер для ReadFile
LPDWORD sizereadbuffer;//Получает число считываемых байт с ReadFile

Структура OPENFILENAME -
C++
1
2
3
4
5
6
7
8
9
10
11
ZeroMemory(&FileName, sizeof(OPENFILENAME));
    SaveFileName.lStructSize = OPENFILENAME_SIZE_VERSION_400A;
    SaveFileName.hwndOwner = hWnd; 
    SaveFileName.lpstrFile = (LPWSTR)filename; 
    SaveFileName.nMaxFile = MAX_PATH;
    SaveFileName.lpstrFilter = _T("Все\0*.*\0Текстовый документ\0*.TXT\0Файлы программ\0*.EXE\0");
    SaveFileName.nFilterIndex = 1; 
    SaveFileName.lpstrFileTitle = NULL;
    SaveFileName.nMaxFileTitle = 0; 
    SaveFileName.lpstrInitialDir = NULL;
    SaveFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
Открываю файл
C++
1
HANDLE CreateMyFile = CreateFile((LPCTSTR)filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL ,NULL);
Считываю данные с файла
C++
1
BOOL ReadMyFile = ReadFile(hCom1,&buffer;,sizeof(readbuffer),sizereadbuffer,NULL);
Когда вывожу beffer на экран пусто
C++
1
MessageBox(NULL,(LPCTSTR)buffer,_T("Диалоговое окно"),MB_OK);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2013, 01:45
Ответы с готовыми решениями:

Работа с файлами
Надо сделать лабу. Задание такое: Пользователь в текстовое поле указывает имя файла и вводит текст в текстовую область. При нажатии...

Работа с INI файлами
Кто может показать рабочий пример работы с ini файлом(тоесть открыть, считать, изменить и закрыть) вот что в инике: znachenie=1 ...

Работа с XML файлами
Нужен пример (полностью) простой програмулины которая работает с xml файлами !!! самые простые действия... в остальном сам разберусь))...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
18.03.2013, 02:52
Где выделение памяти под buffer? Куда вообще происходит чтение, интересно, если ты берешь адрес указателя на char?

P.S. Поле lpstrFilter заполнено неправильно, там нужен завершающий двойной \0
0
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
18.03.2013, 04:38  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    for (;;)
                        {
                            DWORD  dwBytesRead;
                            DWORD  dwRet;
                            char* n;
 
                        if (!ReadFile(CreateMyFile,&n,sizeof(n),&dwBytesRead,&ovl))
                            {
                                switch(dwRet = GetLastError())
                                {
                                case ERROR_HANDLE_EOF:
                                    MessageBox(NULL,_T("кінець читання файлу"),_T("діалогове вікно"),MB_OK );
 
                                    CloseHandle(CreateMyFile);
                                    CloseHandle(hEndRead);
                                return 1;
                                default:
                                    MessageBox(NULL,_T("помилка запису файла"),_T("діалогове вікно"),MB_OK );
                                    MessageBox(NULL,(LPCWSTR)dwRet,_T("діалогове вікно"),MB_OK );
                                    CloseHandle(CreateMyFile);
                                    CloseHandle(hEndRead);
 
                                    return 0;
                                }
                            }
                            WaitForSingleObject(hEndRead, INFINITE);
                            ovl.Offset += sizeof(n);
                        }
Написал по другому.Так правильно?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
18.03.2013, 13:35
Цитата Сообщение от UI Посмотреть сообщение
Где выделение памяти под buffer?
Это и к новому коду относится. Смотри, что ты делаешь: у тебя есть buffer - указатель на char. Ты берешь его адрес, и передаешь в ReadFile. Данные будут читаться куда-то туда, куда указывает второй параметр ReadFile, то есть, непосредственно в саму переменную n. Надо было выделить память (через char *buffer = new char [BUFFER_SIZE + 1]), и передавать не так:
C++
1
if (!ReadFile(CreateMyFile,&buffer,sizeof(buffer),&dwBytesRead,&ovl))
, а вот так:
C++
1
if (!ReadFile(CreateMyFile,buffer,BUFFER_SIZE,&dwBytesRead,&ovl))
, тогда данные будут читаться именно в буфер, а не в переменную, которая на него должна указывать.

P.S. Зачем тебе OVERLAPPED? Ты что, делаешь асинхронное чтение?
0
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
19.03.2013, 16:59  [ТС]
OVERLAPPED для того, чтоб закончить чтение по окончанию файла

за остальное спасибо, а как потом записать данные в другой файл?
WriteFile()

Добавлено через 25 минут
C++
1
if (!ReadFile(CreateMyFile,buffer,BUFFER_SIZE,&dwBytesRead,NULL))
так не работает. Это нужно делать как я в втором посте писал в цикле или просто так написать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2013, 16:59
Помогаю со студенческими работами здесь

Работа с файлами и каталогами
Имеется вывод списка на RichEdit файлов\каталогов выбранной папки с указанием их даты создания. Требуется выделить файлы,которые были...

Winapi работа с файлами
Возник такой вопрос, есть функция FindFirstFile( LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindFileData); которая в структуру...

Работа с аудио файлами
Есть файл со структурой. ПРимер: Fname1 00:00 - 00:15 (Это таймкод) Fname2 00:17 - 00:26 Fname3 00:27 - 00:56 Программа...

Работа с файлами WinAPI (C++)
Всем привет, с недавнего времени начал осваивать WinApi и в ходе выполнения одного из заданий столкнулся с рядом проблем, буду благодарен...

Работа с файлами (WIN32 API)
Вот какое было задание: Обходя заданные каталоги, найдите самый большой файл, удовлетворяющий заданной маске. Выведите на консоль 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru