program pythonchecker;
{$mode objfpc}{$I-}{$H+}{$ifdef mswindows}{$apptype console}{$endif}
uses sysutils,classes, process;
type
{ TProcessEx }
TProcessEx = class(TProcess)
private
FStartTime,FLoadTime:Int64;
protected
procedure SysExecute;override;
public
constructor create(Aowner:TComponent);override;
procedure CheckLoading(Sender: TObject;Context: TObject;
Status: TRunCommandEventCode;const Message: string);
property LoadTime:Int64 read FLoadTime;
end;
{ TProcessEx }
constructor TProcessEx.create(Aowner: TComponent);
begin
inherited create(Aowner);
OnRunCommandEvent := @CheckLoading;
end;
procedure TProcessEx.SysExecute;
begin
FStartTime := GetTickCount64;
FLoadTime := 0;
inherited SysExecute;
end;
procedure TProcessEx.CheckLoading(Sender: TObject; Context: TObject;
Status: TRunCommandEventCode; const Message: string);
begin
if (LoadTime = 0) then
begin
{ first time the event fires }
FLoadTime :=GetTickCount64-FStartTime;
writeln(LoadTime,'ms load time ',Status);
end;
end;
var
P:TProcess;
a,b:string;
c:integer;
(*
import json
from jsonschema import validate
from jsonschema.exceptions import ValidationError
with open("./recipes.json") as f:
document = json.load(f)
with open("./recipes_schema.json") as f:
schema = json.load(f)
try:
validate(instance=document, schema=schema)
print("Validation Succeeded!")
except ValidationError as e:
print('Validation failed !')
print(f"Error message: {e.message}")
*)
begin
P :=TProcessEx.Create(nil);
try
P.executable:='python3';
P.Parameters.Add('-m');
P.Parameters.Add('py_compile');
P.Parameters.Add('hello2.py');
P.Options :=[poUsePipes,poRunIdle];
P.RunCommandLoop(a,b,c);
writeln('------stdOut-----------');
writeln(a);
writeln('------stdErr-----------');
writeln(b);
writeln('------status-----------');
writeln(c);
readln;
finally
P.Free;
end;
end.