Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2013, 06:35   #1
Valeriy4
 
Регистрация: 30.08.2010
Сообщений: 9
По умолчанию Delphi. Запуск внешнего .exe файла.

Здравствуйте.
Подскажите пожайлуста.
Есть программа "Project1.exe" которая должна запустить программу "Project2.exe", а она в свою очередь должна прочесть текстовый файл "filename.txt".

Расположение папок такое:

1papka\2papka\text

Расположение папок с файлами такое:

1papka(Project1.exe)\2papka(Project 2.exe)\text(filename.txt)

или

1papka (Project1.exe)
_\2papka (Project2.exe)
__\text (filename.txt)

Программа Project1.exe находящаяся в папке "1papka" запускает программу Project2.exe находящуюся в папке "2papka" таким кодом:

ShellExecute (Form1.Handle, nil, '2papka\Project2.exe', nil, nil, SW_RESTORE); //открыть документ

Программа Project2.exe запускается нормально, но при клике на кнопку в программе "Project2.exe" должен прочитаться текстовый файл "filename.txt" находящийся в папке "text", но при этом выскакивает окно с ошибкой:

---------------------------
Project2
---------------------------
Invalid filename.
---------------------------
ОК
---------------------------

Если же я перекомпилирую программу "Project1.exe":

ShellExecute (Form1.Handle, nil, 'Project2.exe', nil, nil, SW_RESTORE); //открыть документ

и раположу её в одну папку с программой "Project2.exe", т.е так:

1papka
_\2papka (Project1.exe, Project2.exe)
__\text (filename.txt)

то файл "filename.txt" нормально читается.

----------------------------------------------------------
Тексты программ когда файл filename.txt не читается:

----------------------------------------------------------
Текст программы Project1.exe:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute (Form1.Handle, nil, '2papka\Project2.exe', nil, nil, SW_RESTORE); //  запустить программу
end;
----------------------------------------------------------
Текст программы Project2.exe:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var F:TextFile; // Переменная для содержания текстовых данных
    S: String;
begin
 AssignFile(F, 'text\filename.txt'); // ассоциируем F с нужным файлом
 Reset(F); // открытие файла для чтения
 if FileExists('text\filename.txt') // если файл существует
  then
   while (not EOF(F)) do // пока не конец файла
    begin
     Readln(F, S); // читаем файл в строковую переменную
     RichEdit1.Lines.Add(S);  // выводим в RichEdit1
    end;
  CloseFile(F);  // Закрытие файла
end;
----------------------------------------------------------
Что нужно исправить в коде программ чтобы файл "filename.txt" читался.
Заранее спасибо за ответ.

Последний раз редактировалось Stilet; 10.09.2013 в 08:16.
Valeriy4 вне форума Ответить с цитированием
Старый 10.09.2013, 06:52   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

текущий каталог, это не обязательно каталог экзешника!


AssignFile(F, ExtractFilePath(Application.ExeName )+'text\filename.txt');
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 10.09.2013, 07:39   #3
Valeriy4
 
Регистрация: 30.08.2010
Сообщений: 9
По умолчанию

Спасибо Slym.
Исправил код как вы подсказали и всё заработало!
Оказывается нужно указывать полный путь к файлу.
Код:
procedure TForm1.FormShow(Sender: TObject);
var F:TextFile; // Переменная для содержания текстовых данных
S, patcF: String;
begin
patcF:=ExtractFilePath(Application.ExeName);
AssignFile(F, (patcF+'text\filename.txt')); // ассоциируем F с нужным файлом
Reset(F); // открытие файла для чтения
if FileExists(patcF+'text\filename.txt') // если файл существует
then
while (not EOF(F)) do // пока не конец файла
begin
Readln(F, S); // читаем файл в строковую переменную
RichEdit1.Lines.Add(S); // выводим в RichEdit1
end;
CloseFile(F); // Закрытие файла
end;

Последний раз редактировалось Stilet; 10.09.2013 в 08:16.
Valeriy4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск файла (*.exe) в скрытом режиме @san4ez Общие вопросы Delphi 13 05.10.2011 14:01
C++ Builder 6.0. Запуск exe или ln файла Vikelf Помощь студентам 7 29.05.2011 19:22
Запуск Откомпилированого EXE Файла Deman005 Работа с сетью в Delphi 4 03.08.2010 01:57
Прописать запуск exe-файла Manitu Помощь студентам 4 07.03.2008 10:31
Запуск exe-файла из приложения TerVovik Помощь студентам 4 12.12.2007 16:21