Jump to content
Registration disabled at the moment Read more... ×

Jacek Laskowski

Members
  • Content Count

    275
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Jacek Laskowski

  1. If the data variable contains any character outside the Latin alphabet, such as a Polish diacritical chars, the function returns nil data: AnsiString = 'ąęść'; pObj := fPyEngine.PyUnicode_FromString(PAnsiChar(data)); <-- return nil fPyModule.SetVar('data', pObj); <-- then this raises an exception How to properly pass diacritical chars in a string? ps. the function has Unicode in its name, which means it should probably allow arbitrary characters
  2. Jacek Laskowski

    PythonEngine.PyUnicode_FromString() issue

    I passed what the function expected: PyUnicode_FromString:function (s:PAnsiChar):PPyObject; cdecl; Anyway, unfortunately the module has no documentation, so I also rely on examples from this forum, SO and demos in my experiments. I didn't know that there is a second analogous function with an almost identical name. @pyscripter Thx I am slowly learning, admittedly, the additional difficulty is the lack of knowledge of Python, but AI helps with this.
  3. My code in Delphi: procedure TForm1.btnRunClick(Sender: TObject); var PyEngine: TPythonEngine; PyHeight: Integer; PyIO: TPythonGUIInputOutput; PyModule: TPythonModule; PyWidth: Integer; VarHeight: TPythonDelphiVar; VarWidth: TPythonDelphiVar; begin PyWidth := 80; PyHeight := 40; PyEngine := TPythonEngine.Create(nil); PyModule := TPythonModule.Create(nil); PyIO := TPythonGUIInputOutput.Create(nil); try PyIO.Output := mmoLog; PyEngine.IO := PyIO; PyEngine.DllName := 'python38.dll'; PyEngine.DllPath := ExtractFilePath(Application.ExeName) + 'python\'; PyEngine.UseLastKnownVersion := False; PyEngine.AutoLoad := False; PyEngine.AutoUnload := False; PyModule.Engine := PyEngine; PyModule.ModuleName := '__main__'; try PyEngine.LoadDll; except on E: Exception do begin ShowMessage('Error at load Python: ' + E.Message); Exit; end; end; PyModule.Initialize; PyEngine.PyRun_SimpleString('import builtins; __builtins__ = builtins'); VarWidth := TPythonDelphiVar.Create(nil); VarWidth.Engine := PyEngine; VarWidth.Module := '__main__'; VarWidth.VarName := 'WIDTH'; VarWidth.Initialize; VarWidth.Value := PyWidth; VarHeight := TPythonDelphiVar.Create(nil); VarHeight.Engine := PyEngine; VarHeight.Module := '__main__'; VarHeight.VarName := 'HEIGHT'; VarHeight.Initialize; VarHeight.Value := PyHeight; PyEngine.ExecStrings(mmoSource.Lines, '__main__'); finally VarWidth.Free; VarHeight.Free; PyIO.Free; PyModule.Free; PyEngine.Free; end; end; And python script: canvas = [[' ' for _ in range(WIDTH)] for _ in range(HEIGHT)] After run this I get an error: Traceback (most recent call last): File "__main__", line 1, in <module> TypeError: 'PythonDelphiVar' object cannot be interpreted as an integer I want to pass two variables WIDTH and HEIGHT to the script. What am I doing incorrectly?
  4. @pyscripter And if I just want to pass a string to a Python script is this way: var pObj: PPyObject; data: string; [...] data := 'some long string'; pObj := fPyEngine.PyUnicode_FromString(PAnsiChar(data)); fPyModule.SetVar('data', pObj); ...sufficient and correct?
  5. @pyscripter Thanks, it works. Still a question about that module name. Should I change the module name in the TPythonDelphiVar and TPythonModule components? That is, should it be like this: PyModule.Engine := PyEngine; PyModule.ModuleName := 'my_name'; <-- here [..] VarWidth := TPythonDelphiVar.Create(nil); VarWidth.Engine := PyEngine; VarWidth.Module := 'my_name'; <-- here [...] Or only in variable objects?
  6. Probably my English is too poor, that's why you misunderstood me. Again from start. In the beginning I had a self-contained script, without external variables. I had a simple script to just run P4D, I'm using it for the first time and learning. In that simple script there were only python variables set up as you do in python: HEIGHT = 40 WIDTH = 60 And then, once everything started working, I decided to learn how to pass variables from Delphi. Then I removed the setting of these two variables from the beginning of the script and added to the delphi code the use of TPythonDelphiVar with these two variables. Well, this is where the problems started, because I didn't know that after this change I had to add .Value to these variables. At the same time, it turned out that I also need to add a line of code with: PyEngine.PyRun_SimpleString(‘import builtins; __builtins__ = builtins’); Because without this line I got errors: Traceback (most recent call last): File "__main__", line 1, in <module> ImportError: __import__ not found The above error comes from a script that starts with a line: import math When I use another script, such as: result = sum(i * i for i in range(1, 11)) print("Suma kwadratów od 1 do 10 to:", result) I get a different error: Traceback (most recent call last): File "__main__", line 1, in <module> NameError: name 'sum' is not defined In both cases, the very first word of the script is problematic. When I add a delphi line code with "builtins" it all works. What is the problem?
  7. Thanks! This was the cause of the problem. By the way, I have a question. This script in Python is quite a bit bigger, here I have given a minimal causing the error, the script uses WIDTH and HEIGHT variables. Before I passed these variables from Delphi they were defined at the beginning of the script by a simple assignment: HEIGHT = 40 WIDTH = 60 However, when I added these two variables (TPythonDelphiVar) from the Delphi side, and the module (TPythonModule) object it stopped working many keywords including “import” and only adding a line in the Delphi code: PyEngine.PyRun_SimpleString(‘import builtins; __builtins__ = builtins’); ...resulted in correct working. What is the result of this? Why is it that without variable and module objects, the contents of “builtins” are automatically available, but disappear after adding them?
  8. No, then I get an error on assignment line: VarWidth.Value := PyWidth; <-- here I get an error VarWidth.Initialize; Error message: ThreadId=4800 ProcessId=38 ThreadName="" ExceptionMessage="No variable was created" ExceptionName="Exception" ExceptionDisplayName="Exception" ExceptionAddress=751DC5AF FileName=<not available> LineNumber=<not available> ExceptionObject=033BE960 Classes=[Exception,TObject] Error is raised here: procedure TPythonDelphiVar.SetValue( const val : Variant ); begin if Assigned( FVarObject ) then with TPyVar(PythonToDelphi(FVarObject)) do SetValueFromVariant(val) else raise Exception.Create(SVarNotCreated); <-- here end; --- edit When I change the python script to: print(HEIGHT, WIDTH) then all run ok, and in the log I get: <PythonDelphiVar: 40> <PythonDelphiVar: 60>
  9. Jacek Laskowski

    Check for override

    Such a simple example with inheritance: TAncestor = class procedure MethodX(); virtual procedure Do(); end; TDescendantA = class(TAncestor) //override MethodX procedure MethodX(); override; end; TDescendantB = class(TAncestor) //no override MethodX end; procedure TAncestor.Do(); begin how to check if MethodX is overridden? <<<<<<<<<<<<<<<<<<<< end; var A : TDescendatdA; B : TDescendantB; begin A := TDescendatdA.Create; B := TDescendatdB.Create; A.Do(); B.Do(); How to check if MethodX is overridden?
  10. I need to enable preUnGreedy option in TRegEx, PCRE supports this parameter: unit System.RegularExpressionsCore; interface [...] type TPerlRegExOptions = set of ( preCaseLess, // /i -> Case insensitive preMultiLine, // /m -> ^ and $ also match before/after a newline, not just at the beginning and the end of the string preSingleLine, // /s -> Dot matches any character, including \n (newline). Otherwise, it matches anything except \n preExtended, // /x -> Allow regex to contain extra whitespace, newlines and Perl-style comments, all of which will be filtered out preAnchored, // /A -> Successful match can only occur at the start of the subject or right after the previous match preUnGreedy, // Repeat operators (+, *, ?) are not greedy by default (i.e. they try to match the minimum number of characters instead of the maximum) preNoAutoCapture // (group) is a non-capturing group; only named groups capture ); But the PCRE parameters are set by mapping: constructor TRegEx.Create(const Pattern: string; Options: TRegExOptions); begin FOptions := Options; FRegEx := TPerlRegEx.Create; FRegEx.Options := RegExOptionsToPCREOptions(FOptions); <--- mapping PCRE params to Delphi TRegEx if (roNotEmpty in Options) then FRegEx.State := [preNotEmpty]; FRegEx.RegEx := Pattern; FNotifier := TScopeExitNotifier.Create(FRegEx); if (roCompiled in FOptions) then FRegEx.Compile; end; And for a reason unknown to me, this parameter was omitted: function RegExOptionsToPCREOptions(Value: TRegExOptions): TPerlRegExOptions; begin Result := []; if (roIgnoreCase in Value) then Include(Result, preCaseLess); if (roMultiLine in Value) then Include(Result, preMultiLine); if (roExplicitCapture in Value) then Include(Result, preNoAutoCapture); if roSingleLine in Value then Include(Result, preSingleLine); if (roIgnorePatternSpace in Value) then Include(Result, preExtended); end; Bug? Is there any way to solve this? Delphi 10.3
  11. Jacek Laskowski

    TFDMemTable - how to clear structure?

    How to clear structure of TFDMemTable? Not only data like in EmptyDataset() method, but fields, indexes, filters, etc. too. Is possible?
  12. Jacek Laskowski

    Fonts & ligatures

    Is it possible to enable full ligature support in Delphi code editor?
  13. Renaming private (existed in implementation section) procedure/function parameters does not propagate to the procedure body. Please try edit this function and change InString to something other. function StrToIdBytes(const InString: string): TIdBytes; var ch: Char; i: Integer; begin SetLength(Result, Length(InString)); i := 0; for ch in InString do begin Result[i] := Ord(ch); inc(i); end; end;
  14. Jacek Laskowski

    Structured Difference Viewer added to MMX Code Explorer

    Process Monitor with filter: result is not SUCCESS 15:14:02,9686712 MMX_SDV.exe 7608 CreateFile C:\Windows\Prefetch\MMX_SDV.EXE-C22AB698.pf NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Attributes: n/a, ShareMode: None, AllocationSize: n/a 15:14:02,9692724 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\System32\wow64.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9696735 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\System32\wow64win.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9701432 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\System32\wow64cpu.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9705388 MMX_SDV.exe 7608 CreateFile C:\Windows\System32\wow64log.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9727291 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\winspool.drv NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9730834 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\winspool.drv FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9747241 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\sechost.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9769192 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.exe.Local NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9772908 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_41e855142bd5705d\comctl32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9781272 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\version.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9784119 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\version.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9793129 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\netapi32.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9799320 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\netapi32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9804474 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\netutils.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9811045 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\netutils.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9815691 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\srvcli.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9820002 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\srvcli.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9824942 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\wkscli.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9828137 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\wkscli.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9833001 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\SHFolder.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9836609 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\shfolder.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9843890 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\apphelp.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9849440 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\AppPatch\sysmain.sdb FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9872487 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\imm32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9881468 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\imm32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9886826 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\imm32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9911259 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\WindowsShell.Manifest FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:02,9937350 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.pl-PL NO SUCH FILE Filter: MMX_SDV.pl-PL 15:14:02,9939015 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.pl NO SUCH FILE Filter: MMX_SDV.pl 15:14:02,9940577 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.en-US NO SUCH FILE Filter: MMX_SDV.en-US 15:14:02,9941802 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.en NO SUCH FILE Filter: MMX_SDV.en 15:14:02,9943194 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.PLK NO SUCH FILE Filter: MMX_SDV.PLK 15:14:02,9944376 MMX_SDV.exe 7608 QueryDirectory C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.PL NO SUCH FILE Filter: MMX_SDV.PL 15:14:02,9970411 MMX_SDV.exe 7608 CreateFile C:\Windows\SysWOW64\rpcss.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9971933 MMX_SDV.exe 7608 CreateFile C:\Windows\SysWOW64\rpcss.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9986440 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\wtsapi32.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:02,9997924 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\wtsapi32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0003313 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\WINSTA.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:03,0008270 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\winsta.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0043491 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\uxtheme.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:03,0050350 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\uxtheme.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0062632 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\pl-PL\user32.dll.mui FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0073723 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\Globalization\Sorting\SortDefault.nls FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0141024 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\Registration\R00000000007e.clb FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0148925 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\WindowsCodecs.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0387725 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.exe.Local NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:03,0390254 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\winsxs\x86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.7600.16385_pl-pl_57651e9fc65047a4\comctl32.dll.mui FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0424186 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\Fonts\StaticCache.dat FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0655592 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\ole32.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:03,0839244 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\MMX_SDV.exe.Local NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:40,1728374 MMX_SDV.exe 7608 CreateFile C:\Users\Jacek\AppData\Local\Programs\Raabe Software\MMX\15\imageres.dll NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 15:14:40,1733848 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\imageres.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection: 15:14:40,1736702 MMX_SDV.exe 7608 CreateFile C:\Windows\SysWOW64\pl-PL\imageres.dll.mui NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: , Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a 15:14:40,1737425 MMX_SDV.exe 7608 CreateFile C:\Windows\System32\pl-PL\imageres.dll.mui NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: , Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a 15:14:40,1738264 MMX_SDV.exe 7608 CreateFile C:\Windows\SysWOW64\pl\imageres.dll.mui NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: , Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a 15:14:40,1738828 MMX_SDV.exe 7608 CreateFile C:\Windows\System32\pl\imageres.dll.mui NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: , Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a 15:14:40,1739956 MMX_SDV.exe 7608 CreateFileMapping C:\Windows\SysWOW64\en-US\imageres.dll.mui FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection:
  15. Jacek Laskowski

    Structured Difference Viewer added to MMX Code Explorer

    I get error after open Viewer and trying close it by X button. And now only killing the process can close Viewer app. Delphi 10.3 and Windows 7.
  16. Jacek Laskowski

    IDE search and regular expressions

    Does a files search from within the IDE (shift+ctrl+F), with Regular Expression enabled, support multi-line searches? I tried for an hour and did not get anything. For example, I would like to find all public var sections located between interface and implementation in units. Can the IDE do this?
  17. Jacek Laskowski

    Delphi IDE on AMD cpu?

    I'm working on Ryzen 5900X, the computer after switching from i7 3770 got such wings that I close the windows to keep it from flying away 😉 I work in a virtual machines (vmware), currently I have 2 machines open. The system on the host is Ubuntu, which has very low requirements and low overhead. The ram usage (including the two virtuals) is currently at 10 GB (and I have Firefox open with many tabs, Slack, Telegram and many background services). I strongly recommend AMD
  18. Is it possible to automatically convert the entire Firebird database from win-1250 to UTF-8 encoding? Are there any tools for this purpose? Or using backup/restore?
  19. I am testing the DEC library and the AES algorithm (Rijndael). To check the correctness of the result I use other sources of ciphertext. And I encountered a small problem. I used two online generators and wrote a script in Python, but the results (ciphertext) has different length in each of them: #devglan #B623A479FC657E31F219287CD191075575B2FB56485D0C22E9168A2BF2289C7165CDA67586A486E14115C754ABA158A84A8C3B521E0DF87505D77649A8F1CB52A03D41E205849F28BCA2DE189A9C65CDB648DBC9F7D49AF2F1704B491E9E2DE6FC357ADC8E15733394C3C75B45570AE77A2A6CB6CC4418A558A78313C0C16478A7D61538B88B486BCAE89235D8FCEEB8 #domain tools #B623A479FC657E31F219287CD191075575B2FB56485D0C22E9168A2BF2289C7165CDA67586A486E14115C754ABA158A84A8C3B521E0DF87505D77649A8F1CB52A03D41E205849F28BCA2DE189A9C65CDB648DBC9F7D49AF2F1704B491E9E2DE6FC357ADC8E15733394C3C75B45570AE77A2A6CB6CC4418A558A78313C0C16478 #python #B623A479FC657E31F219287CD191075575B2FB56485D0C22E9168A2BF2289C7165CDA67586A486E14115C754ABA158A84A8C3B521E0DF87505D77649A8F1CB52A03D41E205849F28BCA2DE189A9C65CDB648DBC9F7D49AF2F1704B491E9E2DE6FC357ADC8E15733394C3C75B45570AE7 The common part agrees, but what are the extra bytes? #devglan: https://www.devglan.com/online-tools/aes-encryption-decryption #domain tools: http://aes.online-domain-tools.com/ Python script: import pyaes, binascii key = b'01234567012345670123456701234567' plaintext = 'Some short description with looooooooong additional data like polish diacritical chars... łóżźćęół and digits 0123456789' encrypter = pyaes.Encrypter(pyaes.AESModeOfOperationCBC(key)) ciphertext = encrypter.feed(plaintext.encode('utf-8')) print('Encrypted:', binascii.hexlify(ciphertext).upper()) Initialization vector is set to 16 zeroes.
  20. Jacek Laskowski

    AES and different result length

    Yes, you're right... it's about the padding. I didn't specify it explicitly and the default was used, hence there is a difference in the two libraries. Thanks!
  21. Jacek Laskowski

    Casting pointer to TBytes

    I have a method (from external code) that takes an array of TBytes as a parameter: procedure Something(const aData : TBytes); and I need to pass to it a (read-only) memory area, allocated by GetMem(). Is it possible to cast this to TBytes (or some other trick) without copying the memory to a separate variable of type TBytes?
  22. Jacek Laskowski

    Casting pointer to TBytes

    Simplified version of the question: is it possible to pass a memory area (pointer) to a method that accepts an array of bytes (TBytes) without copying? If it's not possible, there's no trick, that's too bad. I'm looking for another solution. Thanks for the help...
  23. Jacek Laskowski

    When will IDE Editor support more fonts?

    See my discovery in other thread about rendering fonts...
  24. Jacek Laskowski

    MMX 15.0.18 - font bug

    I'm updating the MMX, setting the cursor on the method, press ctrl+E and... The same thing happens when I try to enter the MMX options (menu MMX -> Properties...) I've traced that MMX looks for FontName and FontSize in the registry, in the IDE settings in the Theme subnode, if there are no FontName and FontSize, this is an exception. I don't have these settings. I've written it down and it works, but... something is wrong. Delphi 10.3
  25. Jacek Laskowski

    MMX 15.0.18 - font bug

    I don't think I've written anywhere, but with me practically 99% of classes implement the interface, so there is always an interface behind the class and problems with moving methods to the beginning of the class were ALWAYS present in classes implementing the interface. Yes: I am very happy that I will enter 2021 without this frustrating affliction Happy New Year!
×