Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.05.2007, 03:06
Milton Milton вне форума
Прохожий
 
Регистрация: 02.05.2007
Сообщения: 7
Репутация: 10
По умолчанию Некорректный вызов программы

Здравствуйте. На Delphi я программирую, к сожалению, недавно.
У меня существует такая проблема. Из проекта необходимо вызвать стороннюю программу, которая производит некоторые математические расчеты и записывает результаты в текстовый файл, данные из которого используются в дальнейшей работе основной программы. Однако, когда я вызываю из Delphi эту прогу (WinExec, ShallExecute), она запускается, но данные в файл не записывает (хотя при вызове непосредственно из системы работает нормально).
Помогите, пожалуйста. Заранее благодарен.
Ответить с цитированием
  #2  
Старый 02.05.2007, 20:00
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от Milton
Здравствуйте. На Delphi я программирую, к сожалению, недавно.
У меня существует такая проблема. Из проекта необходимо вызвать стороннюю программу, которая производит некоторые математические расчеты и записывает результаты в текстовый файл, данные из которого используются в дальнейшей работе основной программы. Однако, когда я вызываю из Delphi эту прогу (WinExec, ShallExecute), она запускается, но данные в файл не записывает (хотя при вызове непосредственно из системы работает нормально).
Помогите, пожалуйста. Заранее благодарен.
Это скорее всего происходит из-за того что текущей является директория твоей программы.
Передавай ShellExecute в предпоследнем параметре имя директории с ехе'шником програмулины которую ты запускаеш!
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #3  
Старый 03.05.2007, 01:39
Milton Milton вне форума
Прохожий
 
Регистрация: 02.05.2007
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от mav_c
Это скорее всего происходит из-за того что текущей является директория твоей программы.
Передавай ShellExecute в предпоследнем параметре имя директории с ехе'шником програмулины которую ты запускаеш!

Спасибо за совет, но дело не в этом. Может быть это из-за вызываемой мною программы, которая написана под DOS на MATLABе, переведена и создана в Cи при помощи MATLAB Compiler и с ней вместе идет куча библиотек (где-то на 56 метров)?
Ответить с цитированием
  #4  
Старый 03.05.2007, 18:43
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от Milton
Спасибо за совет, но дело не в этом. Может быть это из-за вызываемой мною программы, которая написана под DOS на MATLABе, переведена и создана в Cи при помощи MATLAB Compiler и с ней вместе идет куча библиотек (где-то на 56 метров)?
Откуда вообще эта программа берёт входные данные?
Просто из системы она загружается да?
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #5  
Старый 03.05.2007, 19:06
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Скорее всего mav_c прав. Судя по тому что программа написана под DOS, то скорее всего она загружает все свои внешние модули относительно текущего каталога запуска. Т.е. каталога в котором лежит exe (com?) файл.
Для проверки рекумендую сделать следующее:
Пусть программа у нас находится D:\megaprog\runprg.exe, пишем вот такой bat файл:
Код:
D:
cd \
cd megaprog
runprg (тут можно параметры указать)
И запускаем его из своей программы (через cmd если напрямую не получится)
Если все будет правильно работать то я прав, иначе - не прав
Ответить с цитированием
  #6  
Старый 03.05.2007, 23:33
Milton Milton вне форума
Прохожий
 
Регистрация: 02.05.2007
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Скорее всего mav_c прав. Судя по тому что программа написана под DOS, то скорее всего она загружает все свои внешние модули относительно текущего каталога запуска. Т.е. каталога в котором лежит exe (com?) файл.
Для проверки рекумендую сделать следующее:
Пусть программа у нас находится D:\megaprog\runprg.exe, пишем вот такой bat файл:
Код:
D:
cd \
cd megaprog
runprg (тут можно параметры указать)
И запускаем его из своей программы (через cmd если напрямую не получится)
Если все будет правильно работать то я прав, иначе - не прав

Большое спасибо, с использованием bat все заработало.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter