Jump to content

softtouch

Members
  • Content Count

    170
  • Joined

  • Last visited

Everything posted by softtouch

  1. softtouch

    Delphi 12.1 is available

    Just wanted to read and comment on it, but that weird new portal does not list any report for me.
  2. softtouch

    Delphi 12.1 is available

    It uninstalled my 12 update 1 version and I had to reinstall all components again 😞
  3. 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.
  4. softtouch

    mainmodule.<functionname> dynamically?

    Thank you! This is actually working just fine!
  5. softtouch

    mainmodule.<functionname> dynamically?

    I did, but I cant get it to work unfortunately. Anyway, thanks for your help.
  6. softtouch

    mainmodule.<functionname> dynamically?

    Thank you, but how can I provide parameter to the call when using this approach like result:=MainModule.ClickElement_ByXPATH(param1,param2,param3...)
  7. softtouch

    mainmodule.<functionname> dynamically?

    Via MainModule.<pythonfunction name here> (TPythonModule of P4D) If the python function ClickElement_ByXPATH exist, I call it like MainModule.ClickElement_ByXPATH();
  8. softtouch

    mainmodule.<functionname> dynamically?

    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?
  9. 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?
  10. 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.
  11. Thanks for the hint with the blank item. Now I just need to find a way to hide the checkbox for that blank item.
  12. 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?
  13. softtouch

    Freeing TPythonModule after using it takes long

    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.
  14. softtouch

    Freeing TPythonModule after using it takes long

    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)
  15. softtouch

    Freeing TPythonModule after using it takes long

    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.
  16. 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.
  17. 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.
  18. softtouch

    How to call a Delphi function from a python script?

    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.
  19. 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?
  20. Ok, that seems to work as expected. Thanks.
  21. softtouch

    Opensource scripting language?

    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.
  22. softtouch

    Opensource scripting language?

    Back to searching... LUA is not what I can use, it seems not to support UTF-8 for files.
  23. softtouch

    Opensource scripting language?

    But it was a good find 🙂 It works well so far. Thanks again.
  24. softtouch

    Opensource scripting language?

    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.
×