Uruchomienie aplikacji DOSowej z parametrem z poziomu aplik.

Uruchomienie aplikacji DOSowej z parametrem z poziomu aplik.
SP
  • Rejestracja: dni
  • Ostatnio: dni
0

J.w., jak można to zrobić?

Konkretnie chodzi mi o wywołanie kompilatora G++. Próbowałem zarówno ShellExecute

Kopiuj
ShellExecute(0, 'open', PChar(ExtractFilePath(Application.ExeName) + 'MinGW\bin\g++.exe'), PChar('"' + sciezka_pliku_cpp + '" -o "' + sciezka_do_tworzonego pliku_exe + '"'), nil, SW_SHOW);

jak i WinExec,

Kopiuj
WinExec(PAnsiChar('"' + ExtractFilePath(Application.ExeName) + 'MinGW\bin\g++.exe" "' + sciezka_pliku_cpp + '" -o "' + sciezka_do_tworzonego pliku_exe + '"'), SW_SHOW);

ale żadna z tych funkcji nie działa we właściwy sposób - nie wywołuje okna i nie przeprowadza kompilacji.

Spróbowałem również CreateProcess, ale wywołanie połączonej z nim procedury owocuje błędem Access violation at address 77B84E20 in module 'ntdll.dll'. Read of address 00000007.

Kopiuj
var
SI:TStartupInfo;
PI:TProcessInformation;

begin
CreateProcess(nil, PWideChar(ExtractFilePath(Application.ExeName) + 'MinGW\bin\g++.exe "' + sciezka_pliku_cpp + '" -o "' + sciezka_do_tworzonego pliku_exe + '"'),
nil, nil, FALSE, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI);

W jaki sposób mam wywołać G++? Domyślam się, że muszę użyć CreateProcess, ale nie wiem jak (ew. mogę zapisywać odpowiedni plik .bat i go uruchamiać, ale wolałbym się od tego powstrzymać)...

  • Rejestracja: dni
  • Ostatnio: dni
0

A w Winexec to się chyba całość a nie fragmenty daje w cudzysłów? Tak jak przy robieniu skrótów w win itp.

AM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

U mnie działa tak:

Kopiuj
const
  ExeFile = 'MinGW\bin\gcc.exe';

function TForm1.RunGCC(path, sciezka_pliku_cpp, sciezka_pliku_exe: string): Boolean;
var
  PI: TProcessInformation;
  exe_i_parametry: string;
begin
  exe_i_parametry := ExeFile + ' ' + sciezka_pliku_cpp + ' -o ' + sciezka_pliku_exe;
  try
    PI := runProcess(PChar(path + exe_i_parametry));
    Result := True;
  except
    Result := False;
  end;
end;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.