Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
1

Почему когда тычу в экзешник мышью, получаю один результат, а когда запускаю его из MSVS- другой?

19.05.2012, 22:53. Показов 2747. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Друзья! Предлагаю провести небольшой эксперимент. Создайте ПРОСТЕЙШИЙ проект "Приложение Windows Form". Теперь сделайте так, читобы при создании формы в каталоге с экзешником искался какой-нибудь файл. То есть в конструктор формы добавьте этот код; в нём всё понятно, он ищет файл file в каталоге с экзешником:

C++
1
2
3
4
            if (System::IO::File::Exists("file")) 
                  MessageBox::Show("Файл есть"); 
            else
                  MessageBox::Show("Файла нет");
Так, а теперь скомпильте проект и киньте в папку с экзешником файл file (любой, или создайте с нуля)
Так вот, если вы будете мышью тыкать на этот экзешник, то получите, что надо: "Файл есть"
Но если вы запустите этот экзешник из IDE (у меня Ctrl+ F5), то получите "Файла нет"
+++++++++++++++++++++++++++++++++++++++++++++++
Почему так? Спасибо, кто откликнется!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2012, 22:53
Ответы с готовыми решениями:

Когда запускаю и ввожу параметры, то, в момент когда программа должна выполнять действие, пишет ошибку
Недавно начали изучать c++. так как в школе не было программирования (преподу пофиг было) я в...

Паскаль сильно тормозит компьютер когда его запускаю
Почему когда пишу программу на Турбо Паскале то процессор загружается на 100%?

Когда запускаю сервер на одной машине, а клиент на другой, то выскакивает ошибка: error 10061
Привет всем, решил написать маленький чат для себя. Сделал две программы, одна сервер, другая...

Когда на экране отображается результат мат операции, а когда видим саму операцию?
Доброго времени суток! Есть код $c=100; $k=10; print $c-$k;// на экран выводит 90 и это...

20
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
19.05.2012, 23:20 2
kravam, EXE не видит файл потому что он лежит
в папке RELEASE . Положите туда файл и все будет O.K.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 00:08  [ТС] 3
Дело в том, что папки releas, у меня вообще нет. Экзешник существует в единственном экземпляре в папке Debug, куда я и кидаю файл file. И, как уже было сказано, экзешник то видит file, то не видит.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
20.05.2012, 00:29 4
kravam,Ошибся , наоборот положите файл в папку с кодом . (и тот же файл положите где EXE)

этот вопрос сам недавно решал с Builder :
EXE и код в разных папках, поэтому файл не находится

Добавлено через 12 минут
Т.е. (могу ошибаться ) Ctrl + F5 запускает не EXE .
Ctrl + F5 запускает - код.
1
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 00:31  [ТС] 5
То есть мне надо вручную перенести в папку с кодом экзешник и file? Это что за приколы такие со стороны MSVS? И что, всякий раз, когда я захочу запустить экзешник через IDE, мне его вручную надо туда переносить что ли? А если он использует некоторые сторонние файлы (как шас file), их все тоже в папку с кодом переносить?

Добавлено через 2 минуты
Цитата Сообщение от MrCold Посмотреть сообщение
Ctrl + F5 запускает - код.
Похоже на то. (Бессмыслица какая-то.) Получается, вопрос сводится- как через IDE запустить экзешник?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
20.05.2012, 00:35 6
Цитата Сообщение от MrCold Посмотреть сообщение
положите файл в папку с кодом . (и тот же файл положите где EXE)
Код отдельно + файл , EXE отдельно + файл

Добавлено через 1 минуту
Цитата Сообщение от kravam Посмотреть сообщение
вопрос сводится- как через IDE запустить экзешник?
Угу ?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 01:17  [ТС] 7
Вообще там нужно сделать так: нужно найти "Окно команд" и запускать экзешник из этого окна, вот используя этот синтаксис:
http://msdn.microsoft.com/ru-r... 90%29.aspx

То есть вот такую команду надо набирать в окне команд

C++
1
Tools.Shell /dir:"""тут рабочий каталог для экзешника""" """а тут полный путь к экзешнику"""
Да-да, именно так. По умолчанию рабочий каталог для экзешника какой-то левый (наверно, папка с кодом), хотя у всех нормальных людей он тот, где этот экзешник лежит. Короче рабочий каталог для экзешника надо указывать явно. И тройные кавычки не забывать писать в случае пробелов в именах путей; по ссылке указано, почему.

И в общем если охота запускать экзешник из IDE, надо исхитриться клавишами переключиться на окно команд и такую команду запустить.

Тихий ужас, что могу сказать...
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
20.05.2012, 01:19 8
а вы в настройки не пробовали заглянуть
Узнаете много интересного
Цитата Сообщение от MrCold Посмотреть сообщение
Ctrl + F5 запускает - код.
Это вообще гениально
прямо так вот по строкам и запускает?
Это интерпретатор?
Ctrl + F5 запуск без отладки
F5 запуск с отладкой
а не находит потому что при поиске прописан ОТНОСИТЕЛЬНЫЙ а не АБСОЛЮТНЫЙ путь
1
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
20.05.2012, 01:25 9
Цитата Сообщение от ValeryS Посмотреть сообщение
не находит потому что при поиске прописан ОТНОСИТЕЛЬНЫЙ а не АБСОЛЮТНЫЙ путь
ну это понятно
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 01:25  [ТС] 10
Пописан не абсолютный и не относительный путь к вайлу file, а прописано просто его имя file. Где экзешник должен его искать? Наверное, в одной папке с собой (в рабочем каталоге), где, он, собсно и лежит. Но он там его не находит.

И как я уже сказал, почему-то рабочим каталогом для экзешника при запуске его из IDE по CTRL+F5 считается папка с кодом, где экзешником и не пахнет даже.
0
Заблокирован
Автор FAQ
20.05.2012, 01:29 11
Цитата Сообщение от kravam Посмотреть сообщение
Получается, вопрос сводится- как через IDE запустить экзешник?
- файл при отладке должен быть в папке проекта. А когда приложение готово то в одном каталоге с приложением вот и всё
0
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
20.05.2012, 01:34 12
kravam, вопрос прикольный конечно. Как я понимаю - любой процесс порождающий процесс передает ему ряд переменных окружения. Текущий каталог в их числе. Поэтому и получается, что когда exe стартует самостоятельно его стартовый каталог и его текущий католог - одно и тоже. Если не изменить принудительно. Когда программа работает под VS - там варианты. Текущий каталог - для Вашего случая не совсем подходящая штука, так как он может меняться.
Узнать стартовый каталог можно:
String^myStartDir=Application::Sturtup;
Это полный путь. Теперь, используя его можно обратиться к файлу.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 01:37  [ТС] 13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
файл при отладке должен быть в папке проекта.
А где эта папка?
++++++++++++++++++++++++++++++++++++++++++++++++++
А вообще я долго думал какой смысл в том, чтобы искать искомый файл не в папке с экзешником, а в папке с проектом или ещё где. Так, в папке с кодом (где он успешно ищется) у меня для самой простой формы и без того находится 12 разных файлов, назовём их "служебные" и одна папка Debug. И во всё это великолепие я должен добавить ещё и СВОИ файлы. Допустим, файлы рисунков, текстовые или ещё какие. А потом не забыть разобюраться, убрать их оттуда. Ну, дела...
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
20.05.2012, 01:38 14
Цитата Сообщение от kravam Посмотреть сообщение
Пописан не абсолютный и не относительный путь к вайлу file, а прописано просто его имя file.
почитай про файловую систему что FAT что NTFS
Цитата Сообщение от kravam Посмотреть сообщение
И как я уже сказал, почему-то рабочим каталогом для экзешника при запуске его из IDE по CTRL+F5 считается папка с кодом, где экзешником и не пахнет даже.
открой уже настройки проекта

поменяй каталог на Debug(Relase) и будет тебе щастье
Миниатюры
Почему когда тычу в экзешник мышью, получаю один результат, а когда запускаю его из MSVS- другой?  
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 01:39  [ТС] 15
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это полный путь. Теперь, используя его можно обратиться к файлу.
Ну ясно, чё. Попробую использовать. Прощай, простота!
0
Заблокирован
Автор FAQ
20.05.2012, 01:39 16
Цитата Сообщение от kravam Посмотреть сообщение
А где эта папка?
- ну вот ты создал проект с названием блаблабла
У тебя в этой папке срр программы и папки Debug и(или) Release так вот при отладке файл надо ложить в папку блаблабла а когда всё готово, копируй приложение куда угодно и рядом с ним ложи файл.
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
20.05.2012, 01:43 17
Цитата Сообщение от kravam Посмотреть сообщение
А вообще я долго думал какой смысл в том, чтобы искать искомый файл не в папке с экзешником, а в папке с проектом или ещё где. Так, в папке с кодом (где он успешно ищется) у меня для самой простой формы и без того находится 12 разных файлов, назовём их "служебные" и одна папка Debug. И во всё это великолепие я должен добавить ещё и СВОИ файлы. Допустим, файлы рисунков, текстовые или ещё какие. А потом не забыть разобюраться, убрать их оттуда. Ну, дела...
если вы не умеете пользоватся инструментом это не значит что он плохой
по этой логике если я кому то передаю проект то я должен копировать все включая папку дебиг
при том что явно придется перекомпилировать
а если я создам несколько папок для разных версий то в каждую должен бросить файлы?
поэтому по умолчанию файлы и ищутся в папке проекта а не в папке исполняемого файла
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.05.2012, 01:51  [ТС] 18
Цитата Сообщение от ValeryS Посмотреть сообщение
поэтому по умолчанию файлы и ищутся в папке проекта а не в папке исполняемого файла
Ну не знаю, не знаю. Я всю жизнь работал с Dev-Cpp, где файлы ищутся именно в папке с экзешником. Потом в родительской, что ли. Не запутаешься! И было хорошо. А если в другое место их пихаешь, тогда прописываешь к ним относительный путь.

Короче, есть же некоторый стандарт. Сперва файлы ищутся в папке с экзешником, потом согласно переменной PATH (я порядок подзабыл). И всем хорошо.
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
20.05.2012, 01:55 19
не дак пропиши в настройках где искать

Добавлено через 1 минуту
Цитата Сообщение от kravam Посмотреть сообщение
Короче, есть же некоторый стандарт. Сперва файлы ищутся в папке с экзешником
В рабочем каталоге!
а для VS по умолчанию это папка проекта
0
Заблокирован
Автор FAQ
20.05.2012, 01:59 20
ValeryS, честно брось гиблое дело...
Человеку к сожалению сложно что-либо объяснить. Тут уже и ты и я писали и даже у MrCold проскользнуло
Цитата Сообщение от MrCold Посмотреть сообщение
наоборот положите файл в папку с кодом
что делать . Это вопросы разряда как создать приложение или как пользоваться отладчиком как по мне.

Цитата Сообщение от kravam Посмотреть сообщение
Сперва файлы ищутся в папке с экзешником, потом согласно переменной PATH (я порядок подзабыл).
- это хедеры так ищёться притом когда кавычки поставил ""

kravam, безо всякого говорю тебе ещё раз
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну вот ты создал проект с названием блаблабла
У тебя в этой папке срр программы и папки Debug и(или) Release так вот при отладке файл надо ложить в папку блаблабла а когда всё готово, копируй приложение куда угодно и рядом с ним ложи файл.
Возьми перестрой проект, а файл положи рядом с срр в котором код, всё будет работать.(послушай людей)
0
20.05.2012, 01:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 01:59
Помогаю со студенческими работами здесь

Когда a = a + b и a+= b дают одинаковый результат и когда разный
Приведите пример, когда a = a + b и a += b дают одинаковый результат и когда разный.


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

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