Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: Maverich - Giugno 02, 2012, 07:08:47 pm
-
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;
-
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).
-
Indipendentemente da ciò che lanci, è buona cosa racchiudere i nomi di files tra doppio apice
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
-
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.