Delphi-Quellcode:
//Function ProccessAndWait
procedure Processandwait(Executable : String);
var
AProcess1: TProcess;
AStringList: TStringList;
AMemo: TMemo;
Result : String;
i : integer;
begin
AStringList := TStringList.Create;
AMemo := TMemo.Create(Form1);
Result:=' ';
try
AProcess1 := TProcess.Create(nil);
AProcess1.CommandLine := Executable;
AProcess1.Options := AProcess1.Options+ [poUsePipes];
{Execute}
AProcess1.Execute;
{Wait to finish}
while AProcess1.running = true do
begin
AStringList.LoadFromStream(AProcess1.Output);
AMemo.lines.add(Astringlist.text);
end;
finally
// Fill Keyboard Models
if Processcmd = 'xkeyboard-models' then
begin
for i := 0 to AMemo.Lines.Count - 1 do
if AMemo.lines[i] = '' then
// do nothing
else
Form1.Page2Combobox.items.add(AMemo.lines[i]);
end;
// Fill Keyboard Layouts
if Processcmd = 'xkeyboard-layouts' then
begin
for i := 0 to AMemo.Lines.Count - 1 do
if AMemo.lines[i] = '' then
// do nothing
else
begin
Form1.Page2Layoutlist.items.add(Delete(AMemo.lines[i], 1, Pos('', AMemo.lines[i])));
end;
end;
//Clean up;
AProcess1.Free;
AStringlist.Free;
AMemo.Free;
end;
end;
Code:
Form1.Page2Layoutlist.items.add(Delete(AMemo.lines[i], 1, Pos('', AMemo.lines[i])));
... funktioniert nicht um zum Beispiel (siehe weiter unten)
cd zu bekommen.
Code:
Form1.Page2Layoutlist.items.add(AMemo.lines[i]);
... liefert mir zum Beispiel:
Code:
cd Congo, Democratic Republic of the
Steh noch immer auf dem Schlauch um:
Code:
Congo, Democratic Republic of the (cd)
Ich müsste
cd rausfiltern, was aber auch mal
nec_vndr/jp
Code:
nec_vndr/jp Japan (PC-98xx Series)
sein kann, und
Democratic Republic of the finden wobei es unterschiedliche Anzahlen von Leerzeichen pro Zeile geben kann. Verzwickt das zu lösen, wenn man so lang aus dem Coden raus ist ...