Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
1

Не создаётся файл в Win32 API

12.03.2018, 15:16. Показов 1146. Ответов 24

Author24 — интернет-сервис помощи студентам
Здравствуйте, пишу приложение на Win32 API, есть кнопка при нажатии которой происходит создание файла
C++
1
finput.open(path_file, ios::binary | ios::in);
(тип ofstream), проблема в том, что файл не создаётся с первого раза, только со второго, то есть жму на кнопку, вылетает ошибка
C++
1
if (!finput) MessageBox(hWnd, "File", "error", NULL);
, второй раз жму всё окей, что делать в такой ситуации?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2018, 15:16
Ответы с готовыми решениями:

Не создается главное окно при запуске программы, Win32 API
Ошибок нет, есть предупреждения, но они не касаются данной темы. Код в тех местах, где создается...

Не создается дочернее окно WIN32 Api
Не создается дочернее окно. Выдается ошибка: error LNK2019: ссылка на неразрешенный внешний символ...

Как открыть к примеру текстовый файл? Win32 api
#include <windows.h> #include <direct.h> #include <commctrl.h> #include "resource1.h" #include...

Почему Microsoft больше не публикует книги по Win32 API? В частности, разработка графического интерфейса с Win32
Кто-нибудь знает, почему Microsoft перестала публиковать книги по программированию Win32 GUI? Я...

24
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
12.03.2018, 15:24 2
При чём ту WinAPI? Для чтения - ifstream.
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
12.03.2018, 15:42  [ТС] 3
nmcf, ну вдруг что, а на сколько корректно будет сделать вот так, этот кусок работает
C++
1
2
3
4
5
6
7
if (!finput)
            {
                finput.close();
                finput.open(path_file, ios::binary | ios::in);
                if (!finput)
                    MessageBox(hWnd, "File", "error", NULL);
            }
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
12.03.2018, 15:49 4
Сначала открытие, затем проверка.
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
12.03.2018, 15:50  [ТС] 5
nmcf, вот так?
C++
1
2
3
4
5
6
7
8
9
finput.open(path_file, ios::binary | ios::in);
 
            if (!finput)
            {
                finput.close();
                finput.open(path_file, ios::binary | ios::in);
                if (!finput)
                    MessageBox(hWnd, "File", "error", NULL);
            }
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
12.03.2018, 17:28 6
Два раза-то зачем? После первого if делай, что надо.
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 17:32 7
Цитата Сообщение от nmcf Посмотреть сообщение
Сначала открытие, затем проверка.
сначала проверка, потом открытие, потом проверка, потом чтение
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
12.03.2018, 18:09 8
Для чего? Проверка после открытия.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.03.2018, 18:25 9
Цитата Сообщение от vlisp Посмотреть сообщение
сначала проверка
Проверка чего?
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 21:19 10
Цитата Сообщение от nd2 Посмотреть сообщение
Проверка чего?
Наличие файла, доступность файла, корректность данных, закрытие. последнее обычно игнорируется, что доводит юзер до лютого батхерта, особенно когда программа крашится и только процесс висит в диспетчере
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.03.2018, 21:21 11
Цитата Сообщение от vlisp Посмотреть сообщение
Наличие файла,
Имеется в виду, через WinAPI это делать?
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 21:41 12
Цитата Сообщение от nd2 Посмотреть сообщение
Имеется в виду, через WinAPI это делать?
не важно как, это общий механизм безопасной работы с файлом
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.03.2018, 21:45 13
Цитата Сообщение от vlisp Посмотреть сообщение
не важно
Может и не важно, но в С++ нет методов для этого:
Цитата Сообщение от vlisp Посмотреть сообщение
Наличие файла, доступность файла,
Тут открываешь, и проверяешь открытие - всё.
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 21:59 14
Цитата Сообщение от nd2 Посмотреть сообщение
в С++ нет методов для этого:
CFindFile как минимум. то, о чем ты говоришь, только в учебных целях можно применять
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.03.2018, 22:06 15
Цитата Сообщение от vlisp Посмотреть сообщение
CFindFile
Это откуда? Нет такого в С++.
Цитата Сообщение от vlisp Посмотреть сообщение
то, о чем ты говоришь,
Это всё, что я хочу сказать.
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 23:17 16
http://programmingcpp.narod.ru/file.htm
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.03.2018, 23:20 17
Цитата Сообщение от vlisp Посмотреть сообщение
http://programmingcpp.narod.ru/file.htm
эта фукция и не входит в стандарт C/C++
Вот и я об этом же. Только об этом.
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
12.03.2018, 23:55 18
Цитата Сообщение от nd2 Посмотреть сообщение
эта фукция и не входит в стандарт C/C++
ну и кто кому виноват? стандарт языка и стандарт разработки приложений - разные вещи. если стандарт языка не позволяет быстро и без велосипедов разрабатывать приложения по стандарту, то что это за язык?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
13.03.2018, 00:00 19
Цитата Сообщение от vlisp Посмотреть сообщение
что это за язык?
Это язык С++!!!
0
1022 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,209
13.03.2018, 01:03 20
Цитата Сообщение от nd2 Посмотреть сообщение
Это язык С++!!!
в с++ без библиотек вообще ничего не сделаешь, благо библиотек хватает
0
13.03.2018, 01:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2018, 01:03
Помогаю со студенческими работами здесь

Почему программа создается в подкаталоге Win32/Debug
Не знаю может куда-то тыцнул, но новые проекты стали создаваться в подкаталоге Win32/Debug. Как...

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

Не создаётся exe файл. Создаётся папка netcoreapp2.0
На рабочем компе всё нормально, exe лежит в Debug. На домашнем может с настройками что намудрил,...

Не создается новый проект win32 console application Visual в C++ 2010 Professional
Проблема в следующем. С какого-то момента Visual C++ 2010 Professional перестал создавать новые...


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

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