From ac92af1f716ab7c54db372ab69344db202f3440f Mon Sep 17 00:00:00 2001 From: Reinier Sterkenburg Date: Sat, 3 Oct 2020 14:13:48 +0200 Subject: [PATCH 1/3] Python code now Python 3 compatible; Memo font is now Consolas, size 10 --- Demos/Demo25/fmMain.dfm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Demos/Demo25/fmMain.dfm b/Demos/Demo25/fmMain.dfm index db67206a..97f5305e 100644 --- a/Demos/Demo25/fmMain.dfm +++ b/Demos/Demo25/fmMain.dfm @@ -32,6 +32,13 @@ object Main: TMain Width = 753 Height = 249 Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Consolas' + Font.Pitch = fpVariable + Font.Style = [] + ParentFont = False ScrollBars = ssVertical TabOrder = 0 end @@ -234,6 +241,12 @@ object Main: TMain Width = 753 Height = 166 Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Consolas' + Font.Pitch = fpVariable + Font.Style = [] Lines.Strings = ( 'class XYZ(object):' ' pass' @@ -242,7 +255,7 @@ object Main: TMain ' def __init__(Self, Value=0):' ' Self.Value = Value' ' def __del__(Self):' - ' print "delete", Self' + ' print ("delete", Self)' ' def __add__(self, other):' ' return Foo(self.Value + other.Value)' ' def Inc(Self, AValue = 1):' @@ -266,12 +279,13 @@ object Main: TMain ' return [a, b, c, d]' '' 'f = Foo()' - 'print "Created", f' + 'print ("Created", f)' 'f.Inc()' 'f.Inc(2)' 'b = Bar()' 'b.Inc()' 'b.Inc(2)') + ParentFont = False ScrollBars = ssVertical TabOrder = 2 end From b0a03f51a259273b92bcd41f9f6230b1e5188bc4 Mon Sep 17 00:00:00 2001 From: Reinier Sterkenburg Date: Sat, 3 Oct 2020 14:13:49 +0200 Subject: [PATCH 2/3] Replaced has_key() calls with get(); fixed some typos. Note: not all assertions are passed! --- Demos/Demo25/fmMain.pas | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Demos/Demo25/fmMain.pas b/Demos/Demo25/fmMain.pas index 13c68621..90b02a1a 100644 --- a/Demos/Demo25/fmMain.pas +++ b/Demos/Demo25/fmMain.pas @@ -105,7 +105,7 @@ procedure TMain.btnTestIntegersClick(Sender: TObject); // check that operation did not change the content of operands. Assert(Integer(a) = 2); Assert(Integer(b) = 3); - // now with a litteral + // now with a literal c := a + b + 1; Assert( Integer(c) = 6 ); c := a + 1 + b; @@ -116,7 +116,7 @@ procedure TMain.btnTestIntegersClick(Sender: TObject); // substraction c := b - a; Assert( Integer(c) = 1 ); - // now with a litteral + // now with a literal c := b - a - 1; Assert( Integer(c) = 0 ); c := b - 1 - a; @@ -127,7 +127,7 @@ procedure TMain.btnTestIntegersClick(Sender: TObject); // multiplication c := a * b; Assert( Integer(c) = 6 ); - // now with a litteral + // now with a literal c := a * b * 2; Assert( Integer(c) = 12 ); c := a * 2 * b; @@ -302,7 +302,7 @@ procedure TMain.btnTestFloatsClick(Sender: TObject); // check that operation did not change the content of operands. Assert(Double(a) = dbl_a); Assert(Double(b) = dbl_b); - // now with a litteral + // now with a literal c := a + b + 1; Assert( Double(c) = (dbl_a+dbl_b+1) ); c := a + 1 + b; @@ -313,7 +313,7 @@ procedure TMain.btnTestFloatsClick(Sender: TObject); // substraction c := b - a; Assert( Double(c) = (dbl_b - dbl_a) ); - // now with a litteral + // now with a literal c := b - a - 1; Assert( Double(c) = (dbl_b-dbl_a-1) ); c := b - 1 - a; @@ -325,7 +325,7 @@ procedure TMain.btnTestFloatsClick(Sender: TObject); c := a * b; dbl_c := dbl_a * dbl_b; Assert( Double(c) = dbl_c ); - // now with a litteral + // now with a literal c := a * b * 2; dbl_c := dbl_a * dbl_b * 2; Assert( Double(c) = dbl_c ); @@ -427,7 +427,7 @@ procedure TMain.btnTestStringsClick(Sender: TObject); // check that operation did not change the content of operands. Assert(String(a) = 'abc'); Assert(String(b) = 'def'); - // now with a litteral + // now with a literal c := a + b + '!'; Assert( String(c) = 'abcdef!' ); c := a + '!' + b; @@ -583,7 +583,7 @@ procedure TMain.btnTestSequencesClick(Sender: TObject); // check that operation did not change the content of operands. Assert(String(a) = '[1, 2, 3]'); Assert(String(b) = '[4, 5, 6]'); - // now with a litteral: note that with D6 SP1, we can't concatenate a custom variant with an var array of variants + // now with a literal: note that with D6 SP1, we can't concatenate a custom variant with a var array of variants c := a + b + VarPythonCreate(['Hello', 'World!', 3.14]); Assert( String(c) = '[1, 2, 3, 4, 5, 6, u''Hello'', u''World!'', 3.1400000000000001]' ); c := a + VarPythonCreate(['Hello', 'World!', 3.14]) + b; @@ -642,7 +642,7 @@ procedure TMain.btnTestSequencesClick(Sender: TObject); // sequence methods: c := b + a; - c.sort(); // note that you must you the parenthesis to distinguish the call between a method or a property. + c.sort(); // note that you must use the parenthesis to distinguish the call between a method or a property. Assert( c = (a+b) ); c := NewPythonList; // facility for building sequences @@ -770,8 +770,8 @@ procedure TMain.btnTestMappingsClick(Sender: TObject); Assert( VarIsSame(c, a) ); // checks if 2 variants share the same Python object. // dict methods - Assert( Boolean(a.has_key(string('a'))) ); - Assert( not Boolean(a.has_key('abc')) ); + Assert( Boolean(a.get(string('a'))) ); + Assert( not Boolean(a.get('abc')) ); keys := a.keys(); keys.sort(); Assert( keys = VarPythonCreate(VarArrayOf(['a', 'b', 'c']))); @@ -780,7 +780,7 @@ procedure TMain.btnTestMappingsClick(Sender: TObject); Assert( values = VarPythonCreate(VarArrayOf([1, 2, 3]))); c := a; c.DeleteItem(string('a')); - Assert( not Boolean(c.has_key(string('a'))) ); + Assert( not Boolean(c.get(string('a'))) ); // test string values a := NewPythonDict; @@ -831,7 +831,7 @@ procedure TMain.btnTestDatesClick(Sender: TObject); Assert( b.GetItem(6) = a.GetItem(6) ); Assert( b.GetItem(7) = a.GetItem(7) ); // don't test the 9th item of the tuple, because it's the daylight saving, - // and it's not computed by the Python for Delphi. + // and it's not computed by Python for Delphi. //Assert( b.GetItem(8) = a.GetItem(8) ); _date2 := b; @@ -986,7 +986,7 @@ procedure TMain.btnTestObjectsClick(Sender: TObject); Assert( VarIsPythonModule(_main) ); Assert( VarIsPythonModule(SysModule) ); Assert( Import('sys').version = SysModule.version ); - Assert( Boolean(SysModule.modules.has_key(GetPythonEngine.ExecModule)) ); // if __main__ in sys.modules + Assert( Boolean(SysModule.modules.get(GetPythonEngine.ExecModule)) ); // if __main__ in sys.modules Assert( VarIsSameType(_main, SysModule) ); Assert( _type(_main).__name__ = 'module'); Assert( BuiltinModule.type(_main).__name__ = 'module'); @@ -1013,7 +1013,7 @@ procedure TMain.btnTestObjectsClick(Sender: TObject); Assert( not VarIsSubclassOf(_main.Foo, _main.Bar) ); Assert( VarIsInstanceOf(_main.b, _main.Foo) ); Assert( not VarIsInstanceOf(_main.f, _main.Bar) ); - Assert( VarIsTrue( BuiltinModule.vars(_main).has_key(string('f')) ) ); + Assert( VarIsTrue( BuiltinModule.vars(_main).get(string('f')) ) ); Assert( VarIsTrue( BuiltinModule.dir(_main).Contains(string('f')) ) ); f := _main.Foo(); // new instance of class Foo @@ -1037,10 +1037,10 @@ procedure TMain.btnTestObjectsClick(Sender: TObject); Log('Test -> a, b, c : ' + a.Value + ', ' + b.Value + ', ' + c.Value); // cascading calls Assert( f.GetSelf().GetSelf().GetSelf().GetSelf().GetValue() = _main.f.GetValue() ); - Assert( Boolean(f.__dict__.has_key('Value')) ); + Assert( Boolean(f.__dict__.get('Value')) ); Assert( VarIsTrue( BuiltinModule.hasattr(f, 'Value') ) ); _str := 'Value'; - Assert( Boolean(f.__dict__.has_key(_str)) ); // check with a string var + Assert( Boolean(f.__dict__.get(_str)) ); // check with a string var Assert( Boolean( BuiltinModule.hasattr(f, _str) ) ); val := f.Value; f.Add(f); // passing itself as an argument @@ -1119,7 +1119,7 @@ procedure TMain.btnTestObjectsClick(Sender: TObject); Assert( _myModule.Add(2, 2) = 4 ); // delete module var f _main.__dict__.DeleteItem(string('f')); - Assert( _main.__dict__.has_key(string('f')) = False ); + Assert( _main.__dict__.get(string('f')) = False ); // open a file using Python if FileExists('MyModule.py') then begin From 1a6d95611ad73aedcb060e96001cd2c9611e6c4e Mon Sep 17 00:00:00 2001 From: Reinier Sterkenburg Date: Sat, 3 Oct 2020 14:13:49 +0200 Subject: [PATCH 3/3] Win64 is now the default platform; removed/replaced old icons; improved high DPI awareness; plus many modifications by Delphi --- Demos/Demo25/VarPythUnitTest.dproj | 298 ++++++++++++++++------------- Demos/Demo25/VarPythUnitTest.res | Bin 1196 -> 111920 bytes 2 files changed, 162 insertions(+), 136 deletions(-) diff --git a/Demos/Demo25/VarPythUnitTest.dproj b/Demos/Demo25/VarPythUnitTest.dproj index a913f106..e0ad0fb0 100644 --- a/Demos/Demo25/VarPythUnitTest.dproj +++ b/Demos/Demo25/VarPythUnitTest.dproj @@ -1,136 +1,162 @@ - - - {F6960501-E313-4232-96B9-EA62FB351D5E} - VarPythUnitTest.dpr - Debug - DCC32 - 13.4 - VCL - True - Win64 - 3 - Application - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - 1033 - VarPythUnitTest.exe - 00400000 - x86 - - - Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - true - $(BDS)\bin\default_app.manifest - - - false - RELEASE;$(DCC_Define) - 0 - false - - - DEBUG;$(DCC_Define) - - - None - - - - MainSource - - -
TMain
-
- - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - - Delphi.Personality.12 - VCLApplication - - - - VarPythUnitTest.dpr - - - False - True - False - - - True - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - True - True - - - 12 - - -
+ + + {F6960501-E313-4232-96B9-EA62FB351D5E} + VarPythUnitTest.dpr + Debug + DCC32 + 19.1 + VCL + True + Win64 + 3 + Application + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace) + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 1033 + VarPythUnitTest.exe + 00400000 + x86 + VarPythUnitTest + + + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + $(BDS)\bin\delphi_PROJECTICON.ico + (None) + + + Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + true + $(BDS)\bin\default_app.manifest + true + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + $(BDS)\bin\delphi_PROJECTICON.ico + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + DEBUG;$(DCC_Define) + + + None + Debug + + + Debug + true + true + PerMonitorV2 + + + + MainSource + + +
TMain
+
+ + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + +
+ + + Delphi.Personality.12 + VCLApplication + + + + VarPythUnitTest.dpr + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + True + True + + + 12 + + +
diff --git a/Demos/Demo25/VarPythUnitTest.res b/Demos/Demo25/VarPythUnitTest.res index 15f1ffe542de89ba16c829e6650d7ef5b27af031..19edda7882b94985f711a52181e1aeabad5934d5 100644 GIT binary patch literal 111920 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 PFn<9#4Ab9lVRQrlr&d=z