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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
process,
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
var
MyProcess : TProcess;
VStrTemp : TStringList;
Buffer: String;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
MyProcess := TProcess.Create(nil);
VStrTemp := TStringList.Create;
MyProcess.Options := [poWaitOnExit, poUsePipes];
MyProcess.Executable := 'df';
MyProcess.Parameters.Add('grep');
MyProcess.Parameters.Add('/media/jj/VERBATIM'); // KO, mais fonctionne avec '/media/jj/VERBATIM' !!!!!
try
MyProcess.Execute;
VStrTemp.LoadFromStream(MyProcess.Output);
Buffer := VStrTemp.Text;
{
- la séquence ci-dessus me retourne un Buffer vide
- la commande 'df | grep VERBATIM ' exécutée dans le terminal me renvoie :
/dev/sdd1 123015548 49000524 74015024 40% /media/jj/VERBATIM
}
{
essai avec '/VERBATIM' ==> KO Buffer est vide
essai avec 'jj/VERBATIM' ==> KO Buffer est vide
essai avec '/jj/VERBATIM' ==> KO Buffer est vide
essai avec 'media/jj/VERBATIM' ==> KO Buffer est vide
essai avec '/media/jj/VERBATIM' ==> OK Buffer contient la ligne de titre et la réponse attendue
- 'Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur'
- '/dev/sdd1 123015548 49000524 74015024 40% /media/jj/VERBATIM' '1ère ligne non filtrée de la réponse
}
finally
end;
MyProcess.Free;
VStrTemp.free;
end;
end. |