powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
25 сообщений из 42, страница 1 из 2
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763573
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста в чём проблема
Не консольное приложение должно запускать консольное

Вот код не консольного:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  winExec(pansiChar('..\..\..\Project1.exe'), SW_SHOW);  
end;

end.



Вот код консольного:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes;

var
  L: TStringList;
  a: string;

begin
  L := TStringList.Create;
//  L.LoadFromFile('text.txt');

  writeln('Если мы видим этот текст,');
 
  readLn(a);
  // и потом  ждём нажатия клавиши вот тут, то всё нормально

end.



Вот так - запускается

Если раскомментировать строку L.LoadFromFile('text.txt'); консольное приложение открывается и тут же закрывается
Если вместо winExec использовать CreateProcess - тоже самое
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763579
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенг,

а если убрать обращения к консоли - readln, writeln?
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763585
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгЕсли раскомментировать строку L.LoadFromFile('text.txt'); консольное приложение открывается и тут же закрываетсяПотому, что в LoadFromFile происходит исключение (вангую, "Файл не найден"), и потому, т.к. нет обработчика исключения, поток завершается (а вместе с ним и процесс, т.к. поток один).
Замени

Код: pascal
1.
L.LoadFromFile('text.txt');


на
Код: pascal
1.
2.
3.
4.
5.
try
  L.LoadFromFile('text.txt');
except
  on E: Exception do writeln('Исключение: ' + E.Message);
end;


И увидешь, верно ли я наванговал.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763587
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock, нононо

Файл найден
Я код (except
on E: Exception do.......) просто из сообщения убрал, а так он есть
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763589
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

И вообще
Я самое главное забыл сказать

Консольное приложение работает с L.LoadFromFile('text.txt');, как надо если его запускать просто (то есть просто двойным кликом)
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763597
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенг,

протоколируйте работу консольного приложения. Каждую строку кода. Записывайте в файл лога результат. Может с доступом чего не так.
Когда вы указываете просто 'text.txt', то рассчитываете на один относительный путь. Когда запускаете процессом, то относительный путь другой. В этом может быть причина.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763603
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгЯ код (except
on E: Exception do.......) просто из сообщения убрал, а так он естьИ какой же текст исключения?
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763606
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгФайл найденЕсли он твоими глазами найден, или программой при "запуске двойным кликом", это не значит, что он будет найден, когда изменится CurrentDirectory.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763611
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

Ахренеть чувак да ты прав!
Заменил путь на абсолютный и запустилось как надо
Вот это да
Странновато конечно, с одной стороны, потому что, что же, если такая ситуация все пути абсолютными писать
Спасибо

YuRock ты кстати всё правильно наванговал но я не сразу это понял потому что я не там поставил sleep
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763613
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Спасибо!
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763622
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенг,

ShellExecute, ShellExecuteEx
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763636
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

А, так вот в чём разница
Там даже в названии функции написано Create Process

Это всё потому что я невнимательно читал 13 заповедей GunSmoker'a
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763643
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгчто же, если такая ситуация все пути абсолютными писатьИх вообще нужно всегда абсолютными писать. На CurrentDirectory никогда не надеяться. Либо контролировать её, при необходимости - устанавливать через SetCurrentDirectory перед работой с относительными путями (но всё это изврат).

Если хочешь открывать файл, который лежит "возле экзешника", то получить полный путь к нему можно так:
Код: pascal
1.
ExtractFilePath( ParamStr( 0 ) ) + 'text.txt'


Можешь завести переменную и инициализировать её один раз - что-то типа
Код: pascal
1.
sAppPath := ExtractFilePath( ParamStr( 0 ) );


И потом уже можно использовать её всегда - этот путь будет всегда верным.
Код: pascal
1.
sAppPath + 'text.txt'
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763671
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгЭто всё потому что я невнимательно читал 13 заповедей GunSmoker'a А самое главное в данном случае прочел ?
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763739
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЕсли хочешь открывать файл, который лежит "возле экзешника", то получить полный путь к нему можно так:
Код: pascal
1.
ExtractFilePath( ParamStr( 0 ) ) + 'text.txt'

А еще лучше получить путь не экзешника, а своего модуля
Код: pascal
1.
ExtractFilePath(GetModuleName(HInstance)) + 'text.txt'
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763811
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_YuRockЕсли хочешь открывать файл, который лежит "возле экзешника", то получить полный путь к нему можно так:
Код: pascal
1.
ExtractFilePath( ParamStr( 0 ) ) + 'text.txt'


А еще лучше получить путь не экзешника, а своего модуля
Код: pascal
1.
ExtractFilePath(GetModuleName(HInstance)) + 'text.txt'


Это для случая, когда надо искать файл "возле модуля". Для случая "возле экзешника" - не всегда подойдет.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763813
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЭто для случая, когда надо искать файл "возле модуля". Для случая "возле экзешника" - не всегда подойдет.В 90% ищут свои файлы. А свои файлы логично складывать возле своего модуля
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763815
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_YuRockЭто для случая, когда надо искать файл "возле модуля". Для случая "возле экзешника" - не всегда подойдет.В 90% ищут свои файлы. А свои файлы логично складывать возле своего модуля
У меня часто плугины смотрят ини-файл экзешника (который лежит возле экзешника), чтобы прочитать кое-какие параметры.
А плугины лежат в папке <Там, где экзешник>\Plugins
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763816
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, что правильней передать этот путь (и эти параметры) в плугины при их инициализации, но иногда ломает.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763824
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я извиняюсь заранее, интересно просто:
ТС на ф права смотрел? Кто файло-то занял и мешает?
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763843
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЕсли хочешь открывать файл, который лежит "возле экзешника", то получить полный путь к нему можно так:
Код: pascal
1.
ExtractFilePath( ParamStr( 0 ) ) + 'text.txt'


Поосторожнее с такими советами. На дворе 2019 год, и линукс в дельфях тоже не за горами
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763845
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокНа дворе 2019 год, и линукс в дельфях тоже не за горами

А что, там файлы не лежат рядом с экзешниками или парсинг пути работает как-то иначе?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39763913
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Ну да, я ж вроде без PathDelimeter обошелся? :)
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764027
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА что, там файлы не лежат рядом с экзешниками или парсинг пути работает как-то иначе?

Бывают всякие извраты, что софт лежит где-нибудь в /bin, либы в /user, а конфиги в /etc
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764088
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,
да и в винде 'благодаря' uac'у файлы уже давно рядом не лежат.
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]