Release Notes maXbox 4.7.5.80 July 2021 mX47
Add 18 Units + 8 Tutorials, 4.7.5 SP1
1403 unit uPSI_SemaphorGrids;
1404 unit uXmlDates2;
1405 unit uPSI_JclTimeZones;
1406 unit uPSI_XmlDocRssParser.pas
1407 unit uPSI_RssParser.pas
1408 uPSI_SimpleParserRSS.pas
1409 unit uPSI_SimpleRSSUtils;
1410 unit uPSIRssModel; BlueHippo
1411 unit uPSIStrUtil; FIBPlus
1412 unit uPSITAChartUtils; TEE
1413 unit uPSIPythonEngine.pas P4DBeta
1414 unit uPSIVclPythonGUIInputOutput;
1415 unit uPSIVarPyth;
1416 unit JclUsesUtils;
1417 unit uPSIcParameters;
1418 unit uPSIWDCCMisc; (uPSIcFileTemplates);
1419 uPSIWDCCOleVariantEnum.pas
1420 unit uPSIWDCCWinInet.pas WDCC
1421 uPSI_PythonVersions.pas
1422 unit uPSI_PythonAction.pas
SIRegister_TFastStringStream(CL);
procedure LoadJPEGResource(image1: TImage; aJpgImage: string);
function CreateDOSProcessRedirected3(const CommandLine, InputFile, OutputFile,
ErrMsg: string): Boolean;
function SysCharSetToStr(const C: TSysCharSet): AnsiString;
function StrToSysCharSet(const S: AnsiString): TSysCharSet;
Procedure MaskFPUExceptions( ExceptionsMasked : boolean; MatchPythonPrecision: Boolean);
Function GetOleVariantEnum( Collection : OLEVariant) : IGetOleVariantEnum);
Function GetOleVariantArrEnum( Collection : OLEVariant) : IGetOleVariantEnum);
Function GetRegisteredPythonVersions : TPythonVersions');
Total of Function Calls: 33848
SHA1: of 4.7.5.80 3E38A48072D4F828A4BE4A52320F092FE50AE9C3
CRC32: B6F69E19 29.8 MB (31,344,456 bytes)
Issue 96 published:
Blaise_96_UK
Script with Python in maXbox:
Procedure PYLaz_P4D_Demo;
//https://wiki.freepascal.org/Python4Delphi
var eng : TPythonEngine;
Out1: TPythonGUIInputOutput;
begin
eng:= TPythonEngine.Create(Nil);
Out1:= TPythonGUIInputOutput.create(nil)
Out1.output:= pyMemo; //debugout.output; //memo2;
Out1.RawOutput:= False;
Out1.UnicodeIO:= False;
out1.displaystring('this string')
//eng.IO:= Out1;
//eng.free;
eng.LoadDll;
eng.IO:= Out1;
if eng.IsHandleValid then begin
writeln('DLLhandle: '+botostr(eng.IsHandleValid))
WriteLn('evens: '+ eng.EvalStringAsStr('[x**2 for x in range(15)]'));
WriteLn('gauss: '+ eng.EvalStringAsStr('sum([x for x in range(101)])'));
WriteLn('gauss2: '+ eng.EvalStr('sum([x % 2 for x in range(10100)])'));
writeln('syncheck '+
botostr(eng.CheckEvalSyntax('print("powers:",[x**2 for x in range(10)])')));
eng.ExecString('print("powers:",[x**2 for x in range(10)])');
eng.ExecString(PYCMD);
writeln('ExecSynCheck1 '+botostr(eng.CheckExecSyntax(myloadscript)));
writeln('ExecSynCheck2 '+
botostr(eng.CheckExecSyntax(filetostring(PYSCRIPT))));
eng.ExecString(filetostring(PYSCRIPT));
writeln(eng.Run_CommandAsString('print("powers:",[x**2 for x in range(10)])',eval_input));
writeln(eng.Run_CommandAsString('sum([x for x in range(201)])',eval_input));
end else writeln('invalid library handle! '+Getlasterrortext);
writeln('PythonOK '+botostr(PythonOK));
out1.free;
eng.free;
end;
Issue 97 published:
https://maxbox4.files.wordpress.com/2021/09/blaise_97_uk_5p_coverpages.png
Issue 98 Cover:
The minimal configuration depends on your Python-installation and the UseLastKnownVersion property in TDynamicDll but once known it goes like this with raiseError to get the Python exceptions:
with TPythonEngine.Create(Nil) do begin
pythonhome:= PYHOME;
try
loadDLL;
Println('Decimal: '+
EvalStr('import("decimal").Decimal(0.1)'));
except
raiseError;
finally
free;
end;
end;