Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
1

Не правильное возвращение bool

19.12.2015, 13:24. Показов 649. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool isFirstLoad(char *PATH)
{
        if(access(PATH, 0) == -1)
        {
                ofstream validFile;
                validFile.open(PATH);
                if(!validFile)
                        ShowMessage("Не удалось выполнить настройки программы(0x1)");
                else
                {
                        ShowMessage("Создаём файл");
                        validFile<<"true"<<endl;
                        validFile.close();
                        return true;
                }
        }
        ShowMessage("Вот и конец");
        return false;
}
Вызываю эту функцию при создании формы, после неё есть еще кое-что:
C++
1
2
3
isFirstLoad(PATH);
if(isFirstLoad(PATH))  ShowMessage("Программа запущенна в первый раз");
else ShowMessage("Программа запущенна не в первый раз");
Сначала выводится "Создаём файл", потом создается файл, потом выводится "Программа запущенна в первый раз"
При следующем запуске выводит "Вот и конец", а после "Программа запущенна в первый раз"

В чём ошибка-то?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2015, 13:24
Ответы с готовыми решениями:

Ошибка приведения типов: E2357 Reference initialized with 'bool', needs lvalue of type 'bool'
Подскажите решение проблемы, программа на rad studio2010, проблема в этой строке ...

Возможно ли возвращение функцией двух значений? Именно возвращение, не ссылка или указатель
Нужна функция в которую забиваешь два числа и сначала она возвращает минимальное, после...

Возвращение типа bool
Написать встроенную функцию, которая возвращает значение типа bool в зависимости от истинности...

Видимость переменных в методе в возвращение переменной типа bool
Всем Привет! Подскажите пожалуйста сделал небольшую программу в ней вызвал созданный класс ...

7
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
19.12.2015, 15:42 2
Для чего первая строка в вызове функции при создании формы?
C++
1
2
3
isFirstLoad(PATH); //<<== Вот эта????
if(isFirstLoad(PATH))  ShowMessage("Программа запущенна в первый раз");
else ShowMessage("Программа запущенна не в первый раз");
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
19.12.2015, 15:53  [ТС] 3
Цитата Сообщение от D1973 Посмотреть сообщение
Для чего первая строка в вызове функции при создании формы?
Вызов функции, в которой всё и происходит
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
19.12.2015, 15:54 4
Ладно, тогда для чего второй вызов этой функции в конструкции if...??? Она же у тебя вызывается и отрабатывает 2 раза, естественно, что 2-й раз она скажет, что программа уже запускалась...
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
19.12.2015, 16:01  [ТС] 5
Цитата Сообщение от D1973 Посмотреть сообщение
Она же у тебя вызывается и отрабатывает 2 раза
Я тоже так думал, но если убрать первую строку и оставить только проверку, то появится сообщение "Программа запущенна в первый раз"
И больше ничего

Сообщений из функции нет
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
19.12.2015, 16:16 6
Если я правильно понимаю, при первом старте програмы у тебя создается какой-то там конфигурационный файл... При последующих стартах идет проверка: есть конфиг - значит программа уже запускалась, нет конфига - тады ой!!!
Правильно? Если нет - огласи задачу почетче, а не выхватывай кусок из своих задумок...
И вообще-то, на кой ляд смешивать средства работы с файлами для C++ и C++ Builder? Это совершенно разные вещи, ведь, судя по коду твоему, ты пишешь оконное приложение.
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
19.12.2015, 16:22  [ТС] 7
Цитата Сообщение от D1973 Посмотреть сообщение
огласи задачу почетче
Вы правильно поняли задачу
Я просто не знаю как еще сделать проверку на первый запуск программы, вот и решил проверять файлом

Цитата Сообщение от D1973 Посмотреть сообщение
И вообще-то, на кой ляд смешивать средства работы с файлами для C++ и C++ Builder?
Можно как-то по-другому создать файл?
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
19.12.2015, 16:49 8
Цитата Сообщение от avraal Посмотреть сообщение
Я просто не знаю как еще сделать проверку на первый запуск программы
Да нет, это как раз правильный момент... Если программа уже "в бою", значет должен быть какой-то конфиг, который считывается при старте и все параметры, которые были при последнем сеансе работы, туда записываются...
Если конфига нет, значит это либо первый старт, либо конфиг был зачем-то удален... И в том и в другом случае предусматриваются параметры программы по умолчанию, которые могут быть жестко забиты в код программы.
Другой вопрос, как хранить этот конфиг. Тут несколько может быть вариантов
1. (самое ходовое) в INI-файле (как с этим работать - тут)
2. в реестре Windows (описание - тут)
3. в локальной или сетевой базе данных (ну, это отдельная песня, очень много интересного здесь)
4. Ну или велосипед с текстовым файлом... Вариантов работы - множество, самый распространенный - загрузка в StringList и парсинг строк.
1
19.12.2015, 16:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2015, 16:49
Помогаю со студенческими работами здесь

Как сделать правильное возвращение к началу функции?
Здравствуйте, сегодня у меня возник вопрос - как сделать правильное возвращение к началу функции,...

Возвращение результата функции bool и использование его в функции main()
У меня есть функция bool, которая имеет вид: bool Pisos(int row, int place) { if (...)...

Функция twoTrue :: Bool -> Bool -> Bool -> Bool
Функция twoTrue :: Bool -&gt; Bool -&gt; Bool -&gt; Bool, которая возвращает True тогда и только тогда,...

не работает bool xor(bool a, bool b)
Учусь по &quot;Базовому курсу&quot; Герберта Шилда #include &lt;iostream&gt; bool xor(bool a, bool d); int...


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

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