-
Content Count
779 -
Joined
-
Last visited
-
Days Won
42
Posts posted by pyscripter
-
-
All modern code editors have multi-select and multi-caret functionality (Visual Studio, VS-Code, Scintilla, Atom etc.). Also the freepascal CudaText. See CudaText - Free Pascal wiki for how it works. Very useful.
I am currently working to add this to SynEdit.
- 5
- 1
-
The sample code above uses VarPyth for high level access to python objects.
MainModule is custom variant wrapping the __main__ python module. Unless you provide optional parameters to ExecStrings, the code is executed in the context of the __main__ module.
- 1
- 1
-
How about?
var SL := TStringList.Crete; try SL.LoadFromFile('example.py'); PyEngine.ExecStrings(SL); var Res := MainModule.DoExample('input'); finally SL.Free; end;
- 1
-
On 12/29/2023 at 12:11 PM, delphivi said:Hello, Yes, I have read it
Are you calling SetPythonHome, as suggested in that page?
On 12/29/2023 at 12:11 PM, delphivi said:SetExceptionMask(exAllArithmeticExceptions);
Have you tried
MaskFPUExceptions(True)
instead?
Is the Conda Library\bin subdirectory in the system path? If not try adding it.
-
Have you read FindingPython · pyscripter/python4delphi Wiki (github.com) regarding Conda? Is the DLLs subdirectory in the environment path?
-
57 minutes ago, MarkShark said:Thanks! Is using Searchbuf (unfortunately with the $if to fix this issue) ok to use as a solution to the SynEdit search engine issue I've been working on? Otherwise, we'd need a reverse version of the current "Next" function which looks like it might be a Boyer-Moore implementation?
Please open an issue and describe the problem. Using SearchBuf should be OK.
-
35 minutes ago, MarkShark said:Also is there a way to do an ifdef specific to 11.2?
See
- 1
-
-
Please submit an issue to the relevant repo. I would expect that simply recompiling the component source with Delphi 12 should work.
-
1 hour ago, Vandrovnik said:Will you be able do print/export with TDirect2dCanvas?
The Direct2D way of printing is to use the ID2D1PrintControl interface (Printing and command lists - Win32 apps | Microsoft Learn). You can look at SynEdit/Source/SynEditPrint.pas at master · pyscripter/SynEdit (github.com) for how this works.
-
Features missing in the Delphi editor:
- Proper Unicode handling . It does not even support combining characters.
- Multi-cursor/selection editing
- Modification (track changes) bar that works with undo.
- Accessibility support
- Drag & drop editing
- triple and quadruple click support
- double/triple click and drag support
- Enhanced scroll bar as in VS Code
- ...
- 2
-
-
Here is a lock-free implementation for your FHIROperationFactory function.
var SingletonFHIROperationFactory : IFHIROperationFactory function FHIROperationFactory: IFHIROperationFactory; var LFHIROperationFactory: IFHIROperationFactory; begin if SingletonFHIROperationFactory = nil then begin LFHIROperationFactory := TFHIROperationFactory.Create; if InterlockedCompareExchangePointer(Pointer(SingletonFHIROperationFactory), Pointer(LFHIROperationFactory), nil) = nil then SingletonFHIROperationFactory._AddRef; end; Result := SingletonFHIROperationFactory; end;
Delphi does something similar in some places.
-
2 hours ago, fastbike said:if the first thread called TMonitor.Enter(Self) on the object would that prevent another thread from making the same call to the object before TMonitor.Exit(Self) had been called by the first thread.
Indeed. This is the whole purpose of locking.
-
The Embarcadero fork of P4D, is often ahead of the PyScripter repo, but it is currently behind. Its main focus is the generation of the delphivcl and delphifmx extension modules as well as Android support. The two repos are synced regularly. I am only responsible for the pyscripter P4D home repo. In most cases it does not matter which one you use.
-
Not too bad an idea. For instance this appears to run OK.
import threading import time from delphivcl import * class DesktopView(Form): def __init__(self, owner): self.SetProps(Caption = "Welcome") # create and set update timer self.tmrUpdate = Timer(self) self.tmrUpdate.Enabled = False self.tmrUpdate.Interval = 1 self.tmrUpdate.OnTimer = self.__on_timer_update self.tmrUpdate.Enabled = True def __on_timer_update(self, sender): time.sleep(1) def app_main(): # initializes GUI Application Application.Initialize() Application.Title = "OPC UA Client Demo" # creates main application form app = DesktopView(Application) app.Show() FreeConsole() # enters in vcl main loop Application.Run() Application.Free() def inthread(): for i in range(20): print(i) time.sleep(1) if __name__ == "__main__": threading.Thread(target=inthread).start() threading.Thread(target=app_main).start()
You could run the asyncio in a thread as in python - Running asyncio loop and tkinter gui - Stack Overflow.
Also please submit an issue to the delphivcl project to expose the Application.OnIdle event. That would make the use of timer unnecessary.
- 1
-
On 11/8/2023 at 7:28 PM, Uwe Raabe said:Indeed, for me the biggest enhancement is the handling of font sizes regarding dpi changes.
Like most new features and bug fixes, this introduces new bugs:
https://quality.embarcadero.com/browse/RSP-43261
https://quality.embarcadero.com/browse/RSP-43263
Update I found a third even more serious issue related to the changes introduced for font scaling:
- 1
-
2 hours ago, Uwe Raabe said:Indeed, for me the biggest enhancement is the handling of font sizes regarding dpi changes. This eliminates a plethora of workarounds
The problem is that if you maintain open source components that support many versions of Delphi, this does not eliminate anything. It just adds another IFDEF in the code. Having said that, it is good to see it fixed.
- 2
-
1 hour ago, Uwe Raabe said:Besides that, there are currently 15 issues I reported in Quality Portal marked fixed in this release.
@Uwe RaabeUnfortunately though, your [RSP-35301] Option to design in Screen PPI but save in 96 PPI - Embarcadero Technologies is not, despite the many votes it got. And by the way thanks for your article. Highly recommended.
Three of my reported issues were fixed and one more is wrongly marked as fixed (https://quality.embarcadero.com/browse/RSP-31137). But I have to agree with @David Heffernan that the list of new features is rather underwhelming, if you are not using C++ Builder. David what do you think of the change related to floating point exceptions?
-
There have been a large number of new features and enhancements implemented in the P4D library recently . This discussion document provides an overview of these developments.
- 5
- 4
-
Let's not start language wars in this thread, which is about a significant development in Python 12 and how take advantage of it using P4D. P4D is about combining the strengths of python and Delphi, not choosing one versus the other.
- 1
-
2 hours ago, Pat Foley said:Is a 2006 Programming Python by Mark Lutz still worth reading?
Python 3 was released in 2008. I would read something more recent that is based on Python 3.
pamoroso/free-python-books: Python books free to read online or download (github.com)
- 1
-
There have been a lot of questions in this forum about running python code in threads using Python4Delphi. I have created a comprehensive guide in this Wiki topic.
- 3
-
2 hours ago, mbaghb said:The point that I noticed is the large size of the DLL file,
I have no idea why and how you are building a DLL, but from the size I can tell that you are pulling in a large chank of the Delphi RTL.
2 hours ago, mbaghb said:And another point, is there a complete document of all functions, methods, etc. for P4D that I can download?
Not except the source code.
- 1
Is there any edit/memo which allows multiselect?
in VCL
Posted
It is explained in the link to CudaText I gave above.