Witam,
działam na xUbuntu i mam Lazarusa 2.0.12. Próbuję uruchomić program zewnętrzny napisany w języku Fortran i skompilowany na tym samym komputerze (plik wykonywalny ma nazwę drgania.out). Procedura wygląda następująco:
procedure TFG.KlawiszUruchomClick(Sender: TObject);
var
RunProgram : TProcess;
begin
try
SetCurrentDir(Katalog);
{$IFDEF Windows}
RunProgram := TProcess.Create(nil);
RunProgram.Executable := 'drgania.exe';
RunProgram.Parameters.Add('');
RunProgram.Execute;
{$ENDIF Windows}
{$IFDEF Unix}
RunProgram := TProcess.Create(nil);
// RunProgram.Executable := './drgania.out';
RunProgram.CommandLine := 'drgania.out';
RunProgram.Options:=RunProgram.Options+[poWaitOnExit];
RunProgram.Execute;
{$ENDIF Unix}
finally
RunProgram.Free;
end;
end;
Pod Windowsem wszystko działa jak należy. W Linuksie próbowałem następujące warianty (z pełną ścieżką lub bez):
RunProgram.Executable := './drgania.out';
RunProgram.CommandLine := './drgania.out';
RunProgram.Executable := 'drgania.out';
RunProgram.CommandLine := 'drgania.out';
Sprawdziłem, że aplikacje okienkowe, np. ParaView, się uruchamiają.
Dodam, że kiedyś nie miałem problemów z tym zadaniem - pojawiły się po którejś aktualizacji Lazarusa (chyba).
Dodam, że przeglądałem już różne strony (np. na stronie https://wiki.freepascal.org/Executing_External_Programs jest przykład jak uruchomić kompilator ppc386) i próbowałem wielu opcji, ale nic to nie dało. Po naciśnięciu klawisza uruchamiającego program nie dostaję żadnych komunikatów błędu - po prostu nic się nie dzieje.
Próbowałem również dodać informacje o shellu (mam basha), ale nie udało mi się rozwiązać problemu.
Będę wdzięczny za pomoc. Program - a konkretnie nakładkę na aplikację konsolową - pokazuję Studentom na zajęciach z programowania. W tym roku również chciałem to zrobić, ale moje stare przykłady nie działają.
Pozdrawiam z Olsztyna,
Wojciech Sobieski.
RunProgram.CommandLine := '/bin/sh drgania.out'