Forum > Generale

Avvio programma esterno (TProcess) e directory complesse

(1/1)

Maverich:
avvio Writer con apertura di un documento

questo funziona regolarmente
AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"' + ' E:\Lazarus\TestZip2\DecretiPA.odt';

questo no
AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"' + '  E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test

Libreoffice mi avvisa
E:\Lazarus\Componenti\Abbrevi non esiste , chiudo il messaggio
E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\5.0\Test\DecretiPA.odt  non esiste

stesso comando con -
AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"' + '  -E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test

Libreoffice mi avvisa
E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\5.0\Test\DecretiPA.odt  non esiste

aggiunge \5.0\Test in modo autonomo
E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\5.0\Test

il path reale e'
E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\

provo con altro
AProcess.CommandLine := '"%ProgramFiles%\Windows NT\Accessories\wordpad.exe"';

solleva eccezione - Failed to esecute
procedure TForm1.AvviaProgramma;
var AProcess: TProcess;
begin
   AProcess := TProcess.Create(nil);

   //il comando da eseguire.
   //AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"' + ' E:\Lazarus\TestZip2\DecretiPA.odt'; //--ok
   AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"' + ' E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt';

   AProcess.Options := AProcess.Options + [poWaitOnExit];
   AProcess.Execute;
   AProcess.Free;
end;

Maverich:
con questo comando nessun problema

SysUtils.ExecuteProcess('C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe', ['E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt']);

non so se possa funzionare anche su linux (lo verifico).

bonmario:
Indipendentemente da ciò che lanci, è buona cosa racchiudere i nomi di files tra doppio apice

--- Codice: ---
"C:\il mio file.odt"
--- Termina codice ---
Questo fa sì che il comando che riceve quel parametro, lo veda appunto come un unico parametro. Nell'esempio qui sopra, senza i doppi apici, il programma che lo riceve, vedrebbe 3 parametri:
- C:\il
- mio
- file.odt


Ciao, Mario

Maverich:
vuole anche il parametro tra apici e senza spazi o altro
es:

AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"  "E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt"';


AProcess.CommandLine := '"C:\Program Files (x86)\Windows NT\Accessories\wordpad.exe" "E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\Documento.rtf"';

tutte le altre cobinazioni non danno risultati

-- parte Writer ma non apre il documento
 AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"'  + '" E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt"';
 AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe"  " E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt"';

-- solleva eccezione
AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe  E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt"';
AProcess.CommandLine := '"C:\Program Files (x86)\LibreOffice 3.5\program\swriter.exe  -E:\Lazarus\Componenti\Abbrevia\Abbrevia 5.0\Test\DecretiPA.odt"';

grazie anche per i post sulla gestione zip.

Navigazione

[0] Indice dei post

Vai alla versione completa