Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
1

Нестыковки командной строки с приложением

22.08.2013, 14:58. Показов 1191. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть такой участок кода
C++
1
2
3
4
5
6
7
try
  { ...  }
catch(...)
  { ShowMessage("Создайте файлы входных данных согласно справке");
    system("help.txt");
    Application->Terminate();
  }
так вот что происходит если ловится ошибка:
открывается командная строка->открывается "help.txt"->и всё(приложение не закрывается)
если самому ручиками закрыть cmd.exe то приложение закроется. Не знаете как разрулить ситуацию?(чтоб проклятущая ком. строка вообще не марала вид)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2013, 14:58
Ответы с готовыми решениями:

Обработка команд из командной строки уже запущенным приложением
Добрый день уважаемые форумчане! Перейду сразу к сути: Необходимо что-бы приложение в запущенном...

Нестыковки с USB 2.0
Постоянно подключает флешку как USB 1.0 (выдает предупреждение "Это устройство может работать...

Нестыковки с данными из excel
Здравствуйте. Возникла следующая проблема в 13 Mathcad'e. При вставке файлов таблиц из excel в...

Бинарный файл, созданный одним приложением, не читается другим приложением
Добрый день. Проблема: Первое приложение создает List<MyClass> и сериализует в бинарный файл....

12
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
22.08.2013, 15:51 2
А почему бы не попробовать другой участок кода...
C++
1
2
3
4
5
6
 catch(...)
  {
    ShowMessage("Ñîçäàéòå ôàéëû âõîäíûõ äàííûõ ñîãëàñíî ñïðàâêå"); 
    ShellExecute(0,"open","help.txt", NULL, NULL, SW_SHOW) ;
    Application->Terminate();
  }
1
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
22.08.2013, 16:10  [ТС] 3
спасибо за идею, но!
ShellExecute(0,"open","help.txt", NULL, NULL, SW_SHOW); - не работает
гуглю тему, и что то нифига не понимаю, откуда эти все параметры?
не могли бы развеять тучи непонимания?
кстати здесь говорят что для win7 подходит
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
22.08.2013, 16:17 4
Цитата Сообщение от soican Посмотреть сообщение
не работает
В чем это выражается? Если подставить абсолютный путь к файлу - все прекрасно работает. С относительным могут быть проблемы, потому что неизвестно относительно чего...

Цитата Сообщение от soican Посмотреть сообщение
откуда эти все параметры?
отсюда, вестимо
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
22.08.2013, 16:19 5
Трудно мне развеять, ибо малограмотен... . У меня с одной формой работает (я же не с потолка пример привел); возможно, вместо первого нуля нужно хэндл окна поставить, мож еще чего... . Понятие "не работает" на большом расстоянии тоже не работает...
0
случайный прохожий
2935 / 1952 / 606
Регистрация: 20.07.2013
Сообщений: 5,160
22.08.2013, 16:21 6
Функция ShellExecute: http://msdn.microsoft.com/en-u... 85%29.aspx.
P.S.: сообщение можно удалить как повтор ссылки.
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
22.08.2013, 16:36  [ТС] 7
C++
1
2
3
catch(...)
  { ...ShellExecute(0,"open.txt","help.txt", NULL, NULL, 5) ;
    ...  }
пишет мне wanted 'const wchar_t *', got 'const char *'

Добавлено через 3 минуты
имею ввиду wanted 'const wchar_t *', got 'const char *'"help.txt" на месте "help.txt"

Добавлено через 1 минуту
что эта wchar_t откуда они такие взялись, отродясь не пользовался ни char ни wchar только String
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
22.08.2013, 16:36 8
Цитата Сообщение от soican Посмотреть сообщение
пишет мне wanted 'const wchar_t *', got 'const char *'
Ох уж мне эти юникоды... !! Добавляейте L или _T перед текстом, или иначе как-нибудь. Эта тема истрепана до неприличия... .
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
22.08.2013, 16:39  [ТС] 9
Цитата Сообщение от nick42 Посмотреть сообщение
Добавляейте L или _T перед текстом, или иначе как-нибудь. Эта тема истрепана до неприличия
добавляю
C++
1
2
ShellExecute(0,"open.txt", _T"help.txt", NULL, NULL, 5) ;
ShellExecute(0,"open.txt", L"help.txt", NULL, NULL, 5) ;
тоже самое
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
22.08.2013, 16:44 10
C++
1
ShellExecute((0,"open",((AnsiString)"help.txt").c_str(),NULL,NULL,SW_SHOW) ;
от вас просют не строчку, а чаровый массив. То, что вы "отродясь пользовались String" - сомневаюсь; когда в параметрах пишешь "мои грёзы", то это может быть и похоже на String, а на деле воспринимается компилятором как символьный массив.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
22.08.2013, 16:46 11
C++
1
ShellExecute(0, L"open", L"D:\\help.txt", NULL, NULL, SW_SHOW);
Я конечно опять всё неправильно делаю, но у меня файл открывается прекрасно...

Добавлено через 1 минуту
Цитата Сообщение от nick42 Посмотреть сообщение
((AnsiString)"help.txt").c_str()
Это надо в мемориз заносить, а в реале за такое - сразу увольнять... Потому что оно на фиг никому не надо. AnsiString-овский c_str() в Юникодном приложении возвращает точно такой же char*, как и был. Соответственно и ошибка будет такая же, слово в слово...
1
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
22.08.2013, 17:28  [ТС] 12
я уею я перепробовал 100 вариантов включая ваш nick42, это животное продолжает мне писать
Cannot convert 'char const[9]' to 'const wchar_t *'
вот мои варианты
C++
1
2
3
4
std::string s1("help.txt");
wchar_t* wstr = new wchar_t[s1.length()+1];
MultiByteToWideChar(CP_ACP,0,s1.c_str(),-1,wstr,(int)s1.length());
wstr[s1.length()] = 0;
ему всё равно что я объявил wchar_t* wstr = new wchar_t... вообще паралельно, он хреначит мне
как попка который одну фразу знает на все мои коды - 'char const[9]' to 'const wchar_t *'
далее
C++
1
2
3
4
5
6
7
8
9
10
11
using std::wstring;
wstring getWChars(const std::string& lines)
{
    wstring wlines;
    wlines.resize(lines.length());
    wlines.assign(lines.begin(), lines.end());
    return wlines;
}
std::string s1("help.txt");
    wstring wstr(getWChars(s1));
    ShellExecute(0,"open.txt",wstr.c_str(), NULL, NULL, 5) ;
тоже самое.это пилец откуда этот wchar_t долбаный взялся его создателю надо... ладно не буду

Добавлено через 2 минуты
UI, спасибо!!!!!!!!!!!!!!!!!!!!!!!!!! открылось!!!!!
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.08.2013, 17:42 13
C++
1
ShellExecute(0,"open.txt",wstr.c_str(), NULL, NULL, 5) ;
Не ну не пипец?
Накой свои пять копеек сУвать в чужой код?

ShellExecuteA(0,"open","some_proram.exe", 0, 0, SW_SHOW) ;
0
22.08.2013, 17:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2013, 17:42
Помогаю со студенческими работами здесь

Обмен данными между веб-приложением (Flask) и графическим приложением (PyQt5) (Python3.7)
С помощью каких библиотек (модулей) и каким образом можно реализовать сервер на базе графического...

Возврат каретки и перевод строки в приглашении Командной строки
В строке приглашения MS-DOS после вывода всей информации перейти на новую строчку. как это сделать?

Слияних 2 файлов в третий + строки + использование командной строки
Помогите с заданием пожалуйста. Задано 2 файла, строки в которых упорядочены по алфавиту. Написать...

Вроде несложные задания, но есть нестыковки
Здравствуйте! В общем-то всё сделала, но хочу, чтобы умный глаз глянул и немного проверил)) В...


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

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