powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
42 сообщений из 42, показаны все 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
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764093
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА что, там файлы не лежат рядом с экзешниками или парсинг пути работает как-то иначе?
Не знаю, как у Дельфей будет под линуксом, но для лазаря журнал "Здоровье" не рекомендует использовать виндовые штучки вроде ParamStr
авторWarning: never use paramstr(0) on any Unix platform to determine the location of the executable, as this is a Dos-Windows-OS/2 convention and has several conceptual problems, which cannot be solved using emulation on other platforms. The only thing paramstr(0) is guaranteed to return on Unix platforms is the name using which the program was started. The directory in which it is located and the name of the actual binary (in case it was started using a symbolic link) are not guaranteed to be available via paramstr(0).

Ибо чревато.

YuRockНу да, я ж вроде без PathDelimeter обошелся? :)
в лазаре круче функция есть - AppendPathDelim :)
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764206
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

Всегда когда вижу твои сообщения говорю что то типа
Е-EA, BROOKLYN BO KING

Спасибо, эту ссылку я не видел
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764261
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonВасилий 2,
да и в винде 'благодаря' uac'у файлы уже давно рядом не лежат.
Тут вопрос религиозный, у меня софта под сотню разного, поэтому предпочитаю складывать не в братскую могилу PF, а в отдельную папку по категориям. соответственно портабельность без заморочек очень уважаю.
Докв лазаре круче функция есть - AppendPathDelim :)
В Дельфи функция еще круче - IncludeTrailingPathDelimiter!
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764279
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Delphi ParamStr(0) не обращается к командной строке.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function ParamStr(Index: Integer): string;
var
  P: PChar;
  Buffer: array[0..260] of Char;
begin
  Result := '';
  if Index = 0 then
    SetString(Result, Buffer, GetModuleFileName(0, Buffer, Length(Buffer)))
  else
  begin
    P := GetCommandLine;
    // ...


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

авторТут вопрос религиозный, у меня софта под сотню разного, поэтому предпочитаю складывать не в братскую могилу PF, а в отдельную папку по категориям. соответственно портабельность без заморочек очень уважаю.

Верю, сам не в восторге, однако приходится делать согласно рекомендаций.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764343
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Бывают всякие извраты, что софт лежит где-нибудь в /bin, либы в /user, а конфиги в /etc

Ну так и на винде софт лежит в Program Files, либы в System32 или SxS, а конфиги в
%USERPROFILE%.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764489
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВасилий 2Бывают всякие извраты, что софт лежит где-нибудь в /bin, либы в /user, а конфиги в /etc

Ну так и на винде софт лежит в Program Files, либы в System32 или SxS, а конфиги в
%USERPROFILE%.

На винде софт лежит там, куда его положишь, либы от прикладух в System32 суют только конченые мерзавцы, а тот софт, что держит конфиги в %USERPROFILE%, удостаивается всяческих матов при попытке переноса на другую машину
makhaonВасилий 2,

авторТут вопрос религиозный, у меня софта под сотню разного, поэтому предпочитаю складывать не в братскую могилу PF, а в отдельную папку по категориям. соответственно портабельность без заморочек очень уважаю.

Верю, сам не в восторге, однако приходится делать согласно рекомендаций.
Никто не мешает совмещать.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764497
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Бывают всякие извраты, что софт лежит где-нибудь в /bin, либы в /user, а конфиги в /etc
makhaonВасилий 2,
да и в винде 'благодаря' uac'у файлы уже давно рядом не лежат.
Ну программист-то должен предполагать такую возможность. Это всё не означает, что возле экзешника никакие файлы лежать не могут обязательно.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764506
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докв лазаре круче функция есть - AppendPathDelim :)
Похоже на копию IncludeTrailingPathDelimiter из SysUtils (которой всегда пользовался я). Видимо, разработчики Лазаря забыли, что такая уже есть. Бывает.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764511
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockБывает.
Их жисть заставляет. Погодите, станет доступным в Дельфях линукс, тоже зае..., вообщем, ощутите всю прелесть кроссплатформенности

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

Воевать, минимум, на три фронта - никаких ресурсов не хватитТак был уже.
Меня, впрочем, это вряд ли коснется - я, вернее, линукса касаться не хочу. Смысла для себя не вижу. Для моих клиентов потратить 100 долларов на винду - не проблема. И с "импортозамещением" у нас проблем нет.
Единственное, что - это российские клиенты. Если их реально обяжут убить винду (я в это не верю - 1Ц же наше фсё
) - что ж, труба... Но их не так много, т.ч. начинать портировать с винды свой софт ради них тоже считаю нецелесообразным.
Хотя я пробовал. Некоторые вещи даже заработали (запустились). Но для этого я убил день. На малую долю процента. И это без тестирования (того, что вылизано десятилетиями). Забил.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764557
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы для работы своего ПО на D7 под Linux собираем пакет с WINE в зависимостях. В принципе, не замечал проблем с ParamStr(0).
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764565
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2На винде софт лежит там, куда его положишь

Ну так и на линухе тебе никто не запрещает забить на стандартный FS layout и получить те
же самые сюрпризы, что и на винде.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39764571
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonда и в винде 'благодаря' uac'у файлы уже давно рядом не лежат
Это да, и всё же стараюсь держать файлы и папки проекта внутри одной структуры (каталога), ясен пень размещнгие БД, медиа и пр. - епархия клиента. Но своё в одном месте нагляднее и обслуживать проще.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39765175
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorЭто да, и всё же стараюсь держать файлы и папки проекта внутри одной структуры (каталога), ясен пень размещнгие БД, медиа и пр. - епархия клиента. Но своё в одном месте нагляднее и обслуживать проще.
Я до сих пор иногда пускаю скупую слезу умиления, когда встречаю приложения которые хотят быть установлены исключительно в корень диска, причём желательно C:.
И некоторым из них меньше 10 лет...
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39765271
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Корень диска - запрет на века ибо нехер не энать структуры кптплогов.
...
Рейтинг: 0 / 0
Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
    #39765699
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЯ до сих пор иногда пускаю скупую слезу умиления, когда встречаю приложения которые хотят быть установлены исключительно в корень диска, причём желательно C:.
И некоторым из них меньше 10 лет...
MS VS ))
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с загрузкой из файла в приложении, которое запускается другим приложением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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