0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
1

В IDE работает, а готовый exe нет

15.04.2015, 10:42. Показов 3611. Ответов 30
Метки нет (Все метки)

Есть маленькая программа, на выключение компьютера по таймеру. Использовались библиотеки iostream, cstdlib, clocale, cctype. Проблема в том, что в среде разработки все отлично отрабатывает, а готовый файл *.exe запускается, но не выполняет команд. Что может быть, куда копать, где настройки менять, возможно в них дело? Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2015, 10:42
Ответы с готовыми решениями:

Как получить готовый .exe файл, чтобы запускать его без IDE
Всем привет Никогд по этому поводу не заморачивался, а тут понадобилось и я сел в лужу. Вобщем,...

Программа работает только в ide, после компиляции нет!
Здравствуйте, уважаемые!! Столкнулась с такой проблемой. Написанное мною приложение, работает...

Почему в одних IDE код работает, а в других нет? (Visual Studio vs DevC++)
Есть простой код, который находит максимальное значение в массиве. Но есть странность одна: 1)На...

В VB работает, а в exe нет?
Делаю Adodc2.Recordset.Close работает, компилирую екзэшник - пишет run-time error 3219 операция не...

30
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 10:49 2
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Есть маленькая программа, на выключение компьютера по таймеру. Использовались библиотеки iostream, cstdlib, clocale, cctype.
В этих библиотеках есть что-то для выключения компьютера?

Добавлено через 39 секунд
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
в среде разработки все отлично отрабатывает
Среда какая?
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
15.04.2015, 14:41  [ТС] 3
Добавлено через 19 минут
с помощью system("shutdown -s -t значение"). Я бы скинул код, но работаю с помощью ramdisk, а он завис вчера и все пропало. Остался только ехе файл, который на рабочий стол кинул. Среда разработки - VS 2013.

Добавлено через 3 часа 22 минуты
Неужели такой сложный вопрос задал или не правильно задал? Но что-то, никто не имеет желания помочь.
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 15:15 4
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
а готовый файл *.exe запускается, но не выполняет команд.
Какие команды не выполняет? Только эту?
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
system("shutdown -s -t значение")
Или ещё что? ОС какая?
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
15.04.2015, 19:42  [ТС] 5
Суть в том, что программа из-под VS запускалась и срабатывали команды. Компьютер действительно выключался. А когда скопировал exe файл, решил попробовать на своем же железе. Программа запустилась, обработка на введение числа работает и текст что "введен неправильный символ" указывается. А вот как ввожу число, то она снова делает запрос на ввод числа. Странно, что текст программы не менялся, а не работает. Так вот и думаю, может какие dll надо, чтобы находились рядом с exe файлом. Я в этом полный профан. Сегодня, если найдется время, то напишу занового программу и посмотрю, что выйдет на этот раз. Писалась программа в Windows 7 64bit. Visual Studio 2013
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
15.04.2015, 20:15 6
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Программа запустилась, обработка на введение числа работает и текст что "введен неправильный символ" указывается. А вот как ввожу число, то она снова делает запрос на ввод числа.
Без кода беспредметный разговор получается. По твоему описанию, получается, что до выполнения команды (на выключение компьютера по таймеру) и не доходит дело. Код нужен, тогда можно о чём-то говорить.

Добавлено через 1 минуту
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Так вот и думаю, может какие dll надо, чтобы находились рядом с exe файлом.
В таких случаях, обычно (за все не ручаюсь) сообщение появляется, где пишется чего не хватает.

Добавлено через 1 минуту
Я проверил, на 8-ке, такое выключение. Что из среды работает (студия 13-я), что с рабочего стола.
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 01:40  [ТС] 7
Все верно понял. До выключения дело не доходит, а снова просит ввести число. Сегодня постараюсь максимально приближенно повторить код, так как ситуация непонятная и нигде не нашел информацию о таком случае. Хорошо бы разобраться для опыта. Спасибо. Код выложу.

Добавлено через 4 часа 56 минут
Вот код, но писал на Ubuntu, прогнал кроссплатформенным компилятором. В Windows так себя и ведет, а в Ubuntu подставил вывод строк проверки. Все отлично отработало. Жаль, что itoa нет в linux. Компилировал в geany строкой i586-mingw32msvc-g++ -o "%e".exe "%f". Русский текст не распознался в Windows, вывелся мусором.
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
#include <iostream>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <cstring>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    
    bool flag = true;
    char str[10];
    
    do{
        system("cls");
        cout << "Введите через сколько минут выключить: ";
        cin >> str;
        if(isdigit(str[0]))
        {
            flag = false;
        }
    }while(flag);
    
    int timer = atoi(str);
    sprintf(str, "%d", timer*60);
    char *result = new char[15 + strlen(str)+1];
    strcpy(result, "shutdown -s -t ");
    strcat(result, str);
    system(result);
    
    delete[] result;
    return 0;
}
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 10:42 8
Лучший ответ Сообщение было отмечено Калмыков Артем как решение

Решение

Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Русский текст не распознался в Windows, вывелся мусором.
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Жаль, что itoa нет в linux.
Всё это, в С++, проще делается (на скрине - работа в Win 7):
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
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    // для русского ввода-вывода в Windows (в свойствах консоли выбрать шрифт: Lucida Console)
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int timer;
    cout << "Введите через сколько минут выключить: ";
    while (!(cin >> timer) || (timer <= 0) || (cin.peek() != '\n')) 
    {
        cin.clear();
        while (cin.get() != '\n');
        cout << "Ошибка ввода! Повторите ввод: ";
    }
    string result = "shutdown -s -t ";
    stringstream s;
    s << timer * 60;
    result += s.str();
    
    system(result.c_str());
    
    return 0;
}
Миниатюры
В IDE работает, а готовый exe нет  
1
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 11:29 9
Запуск с рабочего стола.
Миниатюры
В IDE работает, а готовый exe нет   В IDE работает, а готовый exe нет  
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 11:46  [ТС] 10
Спасибо, изучу. А все же, где в моем коде проблема. Могу комментариями заполнить строки, чтобы видно было, что хотел от этой команды. Может хотел и сделал не совпали где-то?

Добавлено через 14 минут
Какой-то загадочный ноутбук, на котором и Ваш код работает так же. Так же запускается, но при вводе количества минут, ничего не происходит, а просто повторяет запрос на ввод.
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 12:00 11
Уточни, насчёт выложенного тобой, кода. Работает при запуске из среды, в windows, не работает при запуске с рабочего стола? Или что?

Добавлено через 1 минуту
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Так же запускается, но при вводе количества минут, ничего не происходит, а просто повторяет запрос на ввод.
Скрин покажи. А при запуске из среды работает?

Добавлено через 2 минуты
В своём коде вот это сделай:
C++
1
if(isdigit((unsigned char)str[0]))
Чтобы с русскими буквами ошибки не было.

Добавлено через 2 минуты
Я посмотрел твой код: должен правильно работать. Скорее всего, тут дело не в коде. Сейчас на 7-ке попробую работу.

Добавлено через 5 минут
У меня, на 7-ке, твой код работает с рабочего стола.
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:04  [ТС] 12
В VS запускается и отрабатывает программа хорошо, а когда беру .exe файл и пытаюсь им выключить, то он запускается, но не выключает компьютер, а в цикле повторяет запрос ввести число. Скрин скину, но чуть позже. Сейчас поставил Ubuntu, а проверяю ехе файлы на буке жены.
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 12:22 13
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
а в цикле повторяет запрос ввести число.
Вот это самое загадочное. Если бы просто не выключал комп, то тут есть объяснения, а то, что не может из цикла выйти, при вводе числа, тут объяснений у меня нет.

Добавлено через 9 минут
Если будешь выкладывать скрин работы своего кода, то убери там очистку экрана, чтобы было видно, что вводится (неправильно и правильно).
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:33  [ТС] 14
ОК, только прийдется писать тексты на английском. Из-под Убунты ни одним методом не получилось русский текст отобразить в консоле Windows. Кроме Вашего, он не скомпилировался, так как не знает библиотеки windows.h и соответственно первых двух функций. Хотя в интернете встречались коды компилированные в этой же IDE geany с этой библиотекой. В общем мне ещё во многом предстоит разобраться. Сейчас ноут заберу пойду и сделаю скрины.
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 12:51  [ТС] 15
Один и тот же .exe запущен в этой 7-ке загадочной, а второй в Wine из под Ubuntu. В Wine отрабатывает код но естественно не выполняет команду. А в Windows, если заместо функций system(result) подставить cout<<result, все отлично выводится и программа работает.
Миниатюры
В IDE работает, а готовый exe нет   В IDE работает, а готовый exe нет  
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:01  [ТС] 16
Вот так здорово отрабатывает, если убрать system(result) и оставить cout<<result. Может result привести к const или ещё что?
Миниатюры
В IDE работает, а готовый exe нет  
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 13:09 17
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Из-под Убунты ни одним методом не получилось русский текст отобразить в консоле Windows. Кроме Вашего, он не скомпилировался, так как не знает библиотеки windows.h и соответственно первых двух функций.
Не прыгай с одной ОС на другую. С windows сначала разберись.

Добавлено через 3 минуты
Цитата Сообщение от Калмыков Артем Посмотреть сообщение
Вот так здорово отрабатывает, если убрать system(result) и оставить cout<<result.
system(result) заменяешь на cout << result, и код начинает выходить из цикла ввода (при вводе числа)?

Добавлено через 2 минуты
Вот такой код?
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
#include <iostream>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <cstring>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    
    bool flag = true;
    char str[10];
    
    do{
        system("cls");
        cout << "Введите через сколько минут выключить: ";
        cin >> str;
        if(isdigit((unsigned char)str[0]))
        {
            flag = false;
        }
    }while(flag);
    
    int timer = atoi(str);
    sprintf(str, "%d", timer*60);
    char *result = new char[15 + strlen(str)+1];
    strcpy(result, "shutdown -s -t ");
    strcat(result, str);
    //system(result);
    cout << result;
    
    delete[] result;
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:10  [ТС] 18
Цитата Сообщение от lss Посмотреть сообщение
system(result) заменяешь на cout << result, и код начинает выходить из цикла ввода (при вводе числа)?
да, не пойму как такое может быть вообще. А решил полностью работать на ubuntu и прыгать больше не думаю. Просто писать все-равно придется и под винду.

Добавлено через 1 минуту
Да, такой код, но и system(cls) закоментировал, чтобы выводы были видны.
0
lss
938 / 866 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.04.2015, 13:15 19
Возьми мой код, добавь в main, выше всего:
C++
1
setlocale(0, "");
И сделай скрин работы в windows (сначала неправильный ввод, потом правильный).
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 13:17  [ТС] 20
system надо вернуть или пусть закоментирован будет?
затупил , сейчас сделаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2015, 13:17
Помогаю со студенческими работами здесь

Вырубить другой EXE, на семерке работает на XP нет!
Этот код вырубает на семерке вспомогательное приложение а на XP нет:HANDLE hProc; HANDLE HS1 =...

Программа из памяти работает, а из exe-шника нет
Здравствуйте. Написал небольшую, но полезную в хозяйстве программу program del; uses dos; ...

Один и тот же код в exe работает а в dll нет
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;gdiplus.h&gt; #pragma...

Ниче не понимаю - написал, работает, создал exe, нет..
Доброго времени суток!! Вот такой код: #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;windows.h&gt;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru