mirror of https://gitlab.com/basile.b/dexed.git
refactored ce_cdbcmd with ce_common process tools
This commit is contained in:
parent
dd65981470
commit
4ef06c984a
|
@ -33,7 +33,6 @@ type
|
||||||
procedure cdbOutput(sender: TObject);
|
procedure cdbOutput(sender: TObject);
|
||||||
procedure cdbTerminate(sender: TObject);
|
procedure cdbTerminate(sender: TObject);
|
||||||
procedure cdbOutputToGui;
|
procedure cdbOutputToGui;
|
||||||
procedure cdbFree;
|
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
|
@ -62,7 +61,7 @@ end;
|
||||||
destructor TCECdbWidget.destroy;
|
destructor TCECdbWidget.destroy;
|
||||||
begin
|
begin
|
||||||
if Enabled then begin
|
if Enabled then begin
|
||||||
cdbFree;
|
killProcess(fCdbProc);
|
||||||
EntitiesConnector.removeObserver(self);
|
EntitiesConnector.removeObserver(self);
|
||||||
end;
|
end;
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -100,7 +99,7 @@ begin
|
||||||
outname := fProject.outputFilename;
|
outname := fProject.outputFilename;
|
||||||
if not fileExists(outname) then exit;
|
if not fileExists(outname) then exit;
|
||||||
//
|
//
|
||||||
cdbFree;
|
killProcess(fCdbProc);
|
||||||
fCdbProc := TAsyncProcess.create(nil);
|
fCdbProc := TAsyncProcess.create(nil);
|
||||||
fCdbProc.Executable := 'cdb';
|
fCdbProc.Executable := 'cdb';
|
||||||
fCdbProc.Parameters.Add('-c');
|
fCdbProc.Parameters.Add('-c');
|
||||||
|
@ -144,7 +143,7 @@ const
|
||||||
begin
|
begin
|
||||||
if fCdbProc <> nil then
|
if fCdbProc <> nil then
|
||||||
fCdbProc.Input.Write(cmd[1], length(cmd));
|
fCdbProc.Input.Write(cmd[1], length(cmd));
|
||||||
cdbFree;
|
killProcess(fCdbProc);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCECdbWidget.txtCdbCmdKeyPress(Sender: TObject; var Key: char);
|
procedure TCECdbWidget.txtCdbCmdKeyPress(Sender: TObject; var Key: char);
|
||||||
|
@ -166,34 +165,20 @@ end;
|
||||||
|
|
||||||
procedure TCECdbWidget.cdbOutputToGui;
|
procedure TCECdbWidget.cdbOutputToGui;
|
||||||
var
|
var
|
||||||
str: TMemoryStream;
|
|
||||||
lst: TStringList;
|
lst: TStringList;
|
||||||
cnt: Integer;
|
cnt: Integer;
|
||||||
sum: Integer;
|
|
||||||
begin
|
begin
|
||||||
if fCdbProc = nil then exit;
|
if fCdbProc = nil then exit;
|
||||||
|
//
|
||||||
cnt := 0;
|
|
||||||
sum := 0;
|
|
||||||
str := TMemoryStream.Create;
|
|
||||||
lst := TStringList.Create;
|
lst := TStringList.Create;
|
||||||
|
try
|
||||||
while fCdbProc.Output.NumBytesAvailable <> 0 do
|
processOutputToStrings(fCdbProc, lst);
|
||||||
begin
|
|
||||||
str.Size := str.Size + 1024;
|
|
||||||
cnt := fCdbProc.Output.Read((str.Memory + sum)^, 1024);
|
|
||||||
sum += cnt;
|
|
||||||
end;
|
|
||||||
|
|
||||||
str.Size := sum;
|
|
||||||
lst.LoadFromStream(str);
|
|
||||||
|
|
||||||
for cnt := 0 to lst.Count-1 do
|
for cnt := 0 to lst.Count-1 do
|
||||||
lstCdbOut.AddItem(lst.Strings[cnt], nil);
|
lstCdbOut.AddItem(lst.Strings[cnt], nil);
|
||||||
lstCdbOut.Items[lstCdbOut.Items.Count-1].MakeVisible(true);
|
lstCdbOut.Items[lstCdbOut.Items.Count-1].MakeVisible(true);
|
||||||
|
finally
|
||||||
lst.Free;
|
lst.Free;
|
||||||
str.Free;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCECdbWidget.cdbOutput(sender: TObject);
|
procedure TCECdbWidget.cdbOutput(sender: TObject);
|
||||||
|
@ -204,18 +189,7 @@ end;
|
||||||
procedure TCECdbWidget.cdbTerminate(sender: TObject);
|
procedure TCECdbWidget.cdbTerminate(sender: TObject);
|
||||||
begin
|
begin
|
||||||
cdbOutputToGui;
|
cdbOutputToGui;
|
||||||
cdbFree;
|
killProcess(fCdbProc);
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCECdbWidget.cdbFree;
|
|
||||||
begin
|
|
||||||
if fCdbProc = nil then
|
|
||||||
exit;
|
|
||||||
//
|
|
||||||
if fCdbProc.Running then
|
|
||||||
fCdbProc.Terminate(0);
|
|
||||||
fCdbProc.Free;
|
|
||||||
fCdbProc := nil;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
Loading…
Reference in New Issue