Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 16
1

Createfile, readfile, writefile

18.03.2015, 23:05. Показов 3966. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Файл 4 создаётся,но данные из файла 1 не переносятся.Почему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
HANDLE myFile;
HANDLE myFile2;
DWORD buf;
char asd;
myFile = CreateFile(L"file4.txt",GENERIC_WRITE, 0, NULL, CREATE_NEW,FILE_ATTRIBUTE_NORMAL, 0);
if (myFile != INVALID_HANDLE_VALUE)
{ //Файл создан
myFile2 = CreateFile(L"file1.txt",GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
ReadFile(myFile2,&asd, asd*sizeof(char),&buf,NULL);
 
WriteFile(myFile, &asd, asd*sizeof(char), &buf, NULL);
CloseHandle(myFile);
Отладчик выдаёт следующее:
Миниатюры
Createfile, readfile, writefile  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2015, 23:05
Ответы с готовыми решениями:

CreateFile, WriteFile
Подскажите работающий код программы на с++, которая создаёт файл с помощью CreateFile

CreateFile and ReadFile, WinAPI
всем доброго времени суток! открываю текстовый файл и вывожу содуржимое в консоль: char buf;...

Функции CreateFile() и WriteFile()
Господа, помогите разобраться с функциями CreateFile() и WriteFile(). В следующем простом...

ReadFile WriteFile на примере
день добрый есть проект типа напоминания задача сохранять данные в файл при добавлении и ...

7
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
19.03.2015, 08:29 2
А где проверка, что вторая CreateFile завершилась успешно ?
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 16
21.03.2015, 09:18  [ТС] 3
Проблема всё ещё актуальна.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
21.03.2015, 10:01 4
Цитата Сообщение от Убежденный Посмотреть сообщение
А где проверка
Вопрос тоже актуален. Вставьте проверки того, что возвращают
CreateFile, ReadFile и WriteFile, в случае ошибки вызывайте
GetLastError() и вбивайте код в Error Lookup или форматируйте
через FormatMessage. Будет текстовое описание ошибки.
0
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
21.03.2015, 10:20 5
А какие данные в файле? ReadFile считывает один байт.
В смысле передается буфер из одного символа:
C
1
char asd;
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
21.03.2015, 10:21 6
rao, кстати, да !
В "asd" ведь мусор...
0
0 / 0 / 0
Регистрация: 31.10.2014
Сообщений: 16
28.03.2015, 17:18  [ТС] 7
Появилась другая проблема....
Теперь файл создаётся,но копируются только 4 символа...
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
29
30
31
32
33
34
35
36
37
38
39
case IDC_BTN_TEST2:
HANDLE myFile;
HANDLE myFile2;
DWORD m;
LPVOID lpMsgBuf;
 
myFile = CreateFile(L"file4.txt",GENERIC_WRITE, 0, NULL, CREATE_NEW,FILE_ATTRIBUTE_NORMAL, 0);
if (myFile != INVALID_HANDLE_VALUE)
{ //Файл создан
myFile2 = CreateFile(L"file1.txt",GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
 if (myFile2 == INVALID_HANDLE_VALUE) {
        char Error = GetLastError();
         FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );
        return TRUE;
    }
ReadFile(myFile2,&lpMsgBuf,sizeof(myFile2),&m,NULL);
 
WriteFile(myFile, &lpMsgBuf,sizeof(myFile2),&m, NULL);
CloseHandle(myFile);
CloseHandle(myFile2);
const wchar_t *sr = L"Копирование file1 в file2 прошло успешно";
MessageBox(NULL,sr,L"Успех",MB_OK);
return TRUE;
 
}else
{ //Файл не создан
wchar_t *Error1 = L"Файл с таким названием уже существует";
MessageBoxW(NULL,Error1,L"Ошибка",MB_OK);
 
return TRUE;
}
0
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
28.03.2015, 18:44 8
LazyWolf, разберись что такое указатели. Совсем не понимаешь что творишь.
Читай так:
C
1
2
3
    char cBuffer[100];
    ...
    ReadFile(myFile,cBuffer,sizeof(cBuffer),&m,NULL);
а пиши так:
C
1
2
3
    DWORD dwWritten = 0;
    ...
    WriteFile(myFile, cBuffer, m, &dwWritten, NULL);
0
28.03.2015, 18:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2015, 18:44
Помогаю со студенческими работами здесь

WriteFile -> pipe -> ReadFile Несколько сообщений смешиваются в одно
Доброго времени суток! Решил создать консоль для вывода сообщений о работе основной программы. ...

Отправка строки байт PCI-e устройству с использованием CreateFile() и WriteFile()
Собственно имеется PCI-e плата, драйвер разработчика для нее и программа позволяющая просматривать...

Чтения результатов ввода со сканера RS-232(com-port) через ReadFile/CreateFile WinAPI
Доброго времени суток. Есть задача, считать информацию со сканера RS-232 (com-port). Как...

Функции win32 CreateFile WriteFile и ReadFile
В общем делаю небольшой проект. Необходимо считать данные из файла. Очевидно, что изначально в него...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru