-
Content Count
170 -
Joined
-
Last visited
Everything posted by softtouch
-
Just wanted to read and comment on it, but that weird new portal does not list any report for me.
-
It uninstalled my 12 update 1 version and I had to reinstall all components again 😞
-
Lets say I have an array with the following 2 strings in it: ClickElement_ByXPATH ClickElement_ByCSSSelector I have Python function with the same name, so I could call MainModule.ClickElement_ByXPATH or MainModule.ClickElement_ByCSSSelector, which works. Is there any way to create the funcname in the call MainModule.<funcname> based on the strings in the stringlist? For example, when I get the first item in the stringlist (ClickElement_ByXPATH), how could I create a call to MainModule.<here the element from the stringlist>, similar I can do with rtti and delphi functions, so it would call MainModule.ClickElement_ByXPATH? With other words, creating the call based on the text in a stringlist.
-
Thank you! This is actually working just fine!
-
I did, but I cant get it to work unfortunately. Anyway, thanks for your help.
-
Thank you, but how can I provide parameter to the call when using this approach like result:=MainModule.ClickElement_ByXPATH(param1,param2,param3...)
-
Via MainModule.<pythonfunction name here> (TPythonModule of P4D) If the python function ClickElement_ByXPATH exist, I call it like MainModule.ClickElement_ByXPATH();
-
I want to call python functions. Their names are in a stringlist. With other words, how could I call a python function when the function name is a string? Example: var s:='ClickElement_ByXPATH'; How can I call the corresponding python function, which has exactly that name?
-
Listview and groups, any chance to have groups visible without items assigned?
softtouch posted a topic in VCL
I have a listview with groups and items. User can drag/drop items between groups. But when they move the last item of a group to another group, that group become invisible, so they cant move items back to that group. Is there any way to keep groups visible at all time, even they have no items assigned to them? -
Listview and groups, any chance to have groups visible without items assigned?
softtouch replied to softtouch's topic in VCL
I just set DefaultDraw to false in onCustomDrawItem for that dummy item, and I have now the group header with an invisible item and no checkbox for that, so thats all fine so far. -
Listview and groups, any chance to have groups visible without items assigned?
softtouch replied to softtouch's topic in VCL
Thanks for the hint with the blank item. Now I just need to find a way to hide the checkbox for that blank item. -
I create a TPythonModule, and add a delphi methode in the OnInitialization event of the module with TPythonModule(Sender).AddDelphiMethod('....') to it. If I dont call the method from Python, module.free is instantly, but once I have called this delphi method, even the method does noting, it takes a couple of seconds for module.free to return. Is there something I need to do to prevent this delay?
-
Freeing TPythonModule after using it takes long
softtouch replied to softtouch's topic in Python4Delphi
Sorry for the late replay. I believe I found the issue, its related to selenium somehow. Once I use selenium, freeing the module takes 5 seconds, even the selenium driver was already closed earlier. -
Freeing TPythonModule after using it takes long
softtouch replied to softtouch's topic in Python4Delphi
A minimum example, which works just fine but cause the delay, and I cant figure out why that is. In form create: procedure TfrmTest.FormCreate(Sender: TObject); begin eng:=TPythonEngine.Create(nil); eng.DllName:='python312.dll'; eng.DllPath:=pythonhome; module:=TPythonModule.Create(nil); module.Engine:=eng; module.ModuleName:='delphicallback'; module.OnInitialization:=InitPythonModule; eng.LoadDll; end; In form close: procedure TfrmTest.FormClose(Sender: TObject; var Action: TCloseAction); begin eng.Free; // Takes 5 seconds to return once the python script called the delphi method end; The InitPythonModule has just this one line: procedure TfrmTest.InitPythonModule(Sender: TObject); begin TPythonModule(Sender).AddDelphiMethod('callback',delphi_callback,'callback(name, value)->value'); end; The delphi method "delphi_callback" only does this for testing: function TfrmTest.delphi_callback(pself, args: PPyObject): PPyObject; var key:pansichar; value:PPyObject; begin with GetPythonEngine do begin if PyArg_ParseTuple(args, 'sO:callback', @key, @value) <> 0 then begin result:=PyUnicodeFromString('Test'); end; end; end; Calling the python script procedure Tfrmtest.btntestClick(Sender: TObject); begin eng.ExecFile(<the script file path here>); s:=MainModule.Test('Hello world'); end; The python script does this for testing: import delphicallback def Test(s:str)->str: delphicallback.callback('testing',s) -
Freeing TPythonModule after using it takes long
softtouch replied to softtouch's topic in Python4Delphi
I stopped the time and it takes around 5 second until the .free returns. If I dont free it and just free the pythonengine, that will take 5 seconds (I guess for releasing the module). It definitely only take so long when the delphi function was called once from python, even the delphi function does not do anything. If I dont call the delphi function from python, there is no delay at all. -
A TEdgeBrowser is on a form and has a webpage loaded, and the devtools windows is open also. Is there any way to get a notification when the user right-click in the devtools window an element and select "copy->XPATH"? I need to close in that case the browser form and get the text from the clipboard to process is further.
-
I have a python script which does some website work, and at one point in that script, it has to call a Delphi function with a byte array as parameter, and will have to get a string back from the Delphi function and continue the script execution. How can I realize that? I googled but its mostly the other way around, calling a python function from delphi.
-
How to call a Delphi function from a python script?
softtouch replied to softtouch's topic in Python4Delphi
I know, I use P4D... I can call python funtions from delphi, but this time, I need it the other way around, calling a delphi function from python. -
How to call a python function with parameter and get the result
softtouch posted a topic in Python4Delphi
I am playing for the first time a little with Python4Delphi. When I have a python function, for example: def Parser(src:str) -> str: s = "Test " + src return s How do I call this from Delphi? I have this script in a stringlist, and can call PythonEngine1.ExecStrings(sl); But how do I set the parameter "src" before calling the script, and how do I get the "s" value back after the call? -
How to call a python function with parameter and get the result
softtouch replied to softtouch's topic in Python4Delphi
Ok, that seems to work as expected. Thanks. -
Does anybody know of any easy to learn opensource scripting language? I need to be able to send string to the scripting engine from Delphi, have it process the strings and return the result to Delphi. I also need to be able to load such scripts at runtime and execute them. Each of such script need to do different thing, based on some parameter, so I might need to load many different scripts at the same time.
-
Back to searching... LUA is not what I can use, it seems not to support UTF-8 for files.
-
But it was a good find 🙂 It works well so far. Thanks again.
-
Thanks for all the suggestions. I think I will go with lua as recommended by Lars Fosdal (thanks for that). I got most things running already and even it has no regex, gmatch and some other will do it.