Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 6
RAD 2009-XE3

Как запустить файл из динамической директории?

16.06.2019, 13:11. Показов 2632. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем нужно написать программу , которая сможет запускать установщик .exe и .msi из корня программы или вложенной директории, пока сделал так
C++
1
2
3
4
 if (RadioButton2->Checked)
{
system("E:\\Projects\\Setup\\Etoken.msi");
}
Все хорошо открывается, но т.к. путь каждый раз будет меняться - нужно, чтобы программа запускалась из корня , пытался сделать так :
C++
1
system("Setup\\Etoken.msi");
и так :
C++
1
system("..\\Setup\\Etoken.msi");
но не вышло, подскажите, что еще можно придумать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2019, 13:11
Ответы с готовыми решениями:

Как заставить запустить файл в неизвестной директории
В общем, есть папка "Delphi" на рабочем столе, в ней сама программа, а в этой папке создана еще одна папка "Abra", в ней файл,...

Process.Start: как запустить файл, находящийся в директории программы
Еще раз здравствуйте!) Подскажите пожалуйста. Я ознакомился с Process.Start(), и у меня появился вопрос, что надо писать что бы он искал...

Запустить exe файл из директории программы
как сделать что бы при нажатии на button на форме открылся любой файл (мне нужен *.exe файл 2й программы)из диррекрории программы?

12
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
16.06.2019, 13:15
ExtractFilePath(ParamStr(0)) + "Setup\\EToken.msi"
1
0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 6
16.06.2019, 13:42  [ТС]
volvo
можно поподробней? Попробовал сделать как вы сказали - проигнорировался запуск файла, может я что-то не так сделал? написал в точности как вы сказали :
C++
1
ExtractFilePath(ParamStr(0)) + "Setup\\EToken.msi"
Добавлено через 19 минут
Путем проб и ошибок понял , что
C++
1
ExtractFilePath(ParamStr(0)) + "Setup\\EToken.msi"
дает нам путь , но как запустить файл с помощью этого ? я сделал так :
C++
1
2
putb=ExtractFilePath(ParamStr(0)) + "Setup";
system("putb\\EToken.msi");
и нечего не вышло, более умного пока нечего не придумал, к сожалению(
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
16.06.2019, 14:17
Цитата Сообщение от soniksoft Посмотреть сообщение
что еще можно придумать?
C++
1
 ShellExecute(NULL,"open",".\\Setup\\EToken.msi" ,NULL,NULL,SW_RESTORE);
1
0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 6
16.06.2019, 14:24  [ТС]
nick42
Ошибка:
C++
1
2
[bcc32c Error] Unit3.cpp(110): no matching function for call to 'ShellExecuteW'
  shellapi.h(88): candidate function not viable: no known conversion from 'const char [5]' to 'LPCWSTR' (aka 'const wchar_t *') for 2nd argument
#include <Windows.h> и #include <shellapi.h> вписал
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
16.06.2019, 15:47
.. Pardon. Не обратил внимания на RAD 2009... . Беру свой совет назад.
0
0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 6
16.06.2019, 15:53  [ТС]
Понял , что я не могу использовать переменную в system();
Каким образом можно ее туда засунуть? немного погуглил , нашел :
system("putb").c_str();
но не помогло.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
16.06.2019, 16:03
Если охота расширить переменную окружения Path, то для этого можно использовать getenv(), putenv().
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
16.06.2019, 16:14
Лучший ответ Сообщение было отмечено soniksoft как решение

Решение

Цитата Сообщение от soniksoft Посмотреть сообщение
Понял , что я не могу использовать переменную в system();
Каким образом можно ее туда засунуть?
Написал:
C++
1
    system(AnsiString(ExtractFilePath(ParamStr(0)) + "Setup\\7z1900.msi").c_str());
, нормально запустился инсталлятор 7z, который лежит в нужной папке. Что я опять не так сделал? XE4, если что.
1
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
16.06.2019, 16:18
не
Цитата Сообщение от soniksoft Посмотреть сообщение
putb=ExtractFilePath(ParamStr(0)) + "Setup";
system("putb\\EToken.msi");
, а
C++
1
2
putb = ExtractFilePath(ParamStr(0)) + "Setup\\EToken.msi";
system(putb.c_str());
1
0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 6
16.06.2019, 16:20  [ТС]
volvo
Огромное спасибо, помогло, я сам себя перемудрил с переменными этими.... а ларчик просто открывался, благодарю
Тему можно закрыть
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
16.06.2019, 16:21
Lelik-pahan, не пойдет. В RAD2009+ ExtractFilePath возвращает UnicodeString, а его .c_str() - вернет wchar_t* независимо от настроек проекта (за это - отдельное "спасибо" рукоголовым из Embarcadero, поотрывать бы им эти руки, которые совсем не из головы растут), а функция требует char*, так что надо еще и к AnsiString приводить...
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
16.06.2019, 16:26
volvo, а переменная putb у меня как AnsiString объявлена ). Я исходил из того, что раз перед добавляемым текстом нет макроса L, значит работаем с Ansi.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2019, 16:26
Помогаю со студенческими работами здесь

Как запустить python проект из любой директории Ubuntu
Проект создаю с помощью PyCharm - python3.7 Можно запустить терминал в PyCharm,но это не интересно. Как запустить с помощью обычной...

Как запустить приложение, которое находится в той же директории, что и собранная программа?
Вопрос в заголовке.

Можно ли отправить файл на почту, не переместив её в директории на сервере с временной директории?
Всем добрый день, вопрос такой. Можно ли обращаться к файлу до его перемещения с временной директории для хранении файлов. Обращаться и...

Чтение директории как файл
Работаю в среде Убунту 14.04. Попробовал прочитать директорию вот таким способом: #include&lt;stdio.h&gt; #include&lt;locale.h&gt; ...

Как проверить существует ли файл в директории
Как проверить существует ли файл в указанной директории. Если да: Выдать сообщение что существует. Если нет: выдать сообщение что файл...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru