Jump to content


Popular Content

Showing content with the highest reputation since 04/30/21 in all areas

  1. Stefan Glienke

    Several F2084 Internal Error on Delphi 10.4.2

    That's what QA said before 10.4.2 released
  2. Vincent Parrett

    Several F2084 Internal Error on Delphi 10.4.2

    That's exactly what I am doing, since the packages are plugins that the user can choose not to load. It's no where near as simple as you make out. And really, my code and application architecture is not the issue here.
  3. Stefan Glienke

    Several F2084 Internal Error on Delphi 10.4.2

    Or he just wants to see the correct values when inspecting them while debugging?
  4. I found the answer in this post https://en.delphipraxis.net/topic/2258-need-help-adding-namespaces-to-soap/ InvRegistry.RegisterMethodInfo(TypeInfo(NAV_ExportCustomerItemPriceV1Soap), 'NAV_CustomerItemPriceV1', 'ReadMultiple', '[ReturnName="NAV_CustomerItemPriceV1Result"]', IS_OPTN); Params are: TypeInfo, InternalName, ExternalName, ReturnName, XMLOptions Setting ExternalName appears to have fixed it
  5. Dalija Prasnikar

    Several F2084 Internal Error on Delphi 10.4.2

    I am afraid that list might be too long... and it would require input from large number of developers. It all depends on code you have and what kind of workflow you have at any given moment and for which platforms you develop. What is good version for some people, might be utmost nightmare for others. And besides stability, there might be other reasons and bugs in the core frameworks which makes some versions unsuitable for some developers. Workarounds were usually move to another version and hope for the best. Without actually trying on your own code and working with some version, one can never know. Since Embarcadero opened up beta testing for larger audience, it would be good that anyone who can participate. The more the merrier. It is also important to start testing early, because some bugs if found too late in the cycle may end up unfixed. Of course, all that also does not guarantee final quality and release success, but it can be significant factor. Literally one person can stumble upon critical bug that would end up in RTM, and all other testers might miss it for one reason or another. It is huge codebase, and we cannot test and use all features thoroughly.
  6. Dalija Prasnikar

    Several F2084 Internal Error on Delphi 10.4.2

    For anyone interested in try...finally patch... it is still broken. I guess those "3 minutes" tests strike again...
  7. Stefan Glienke

    TestInsight 1.2 released

  8. I wish everyone a healthy day Is there a away to prevent getting picture of a form ( Prevent Alt or Ctrl Print Screen ) ? Thank You
  9. Dany Marmur

    Help Understanding SQL Parameters Utilization

    SQL Injection is overrated as a threat when using "our stuff". Shure it can happen, but it's mostly on LAMP because "hackers" know MySQL and can figure out how to type something that will break you strings and still execute the query. A really good hacker that knows or guesses at your SQL should, even so, have a bit of work to do in figuring out how to change a select to a delete. OK, so on a more serious note; I very seldom do NOT use parameters. Some stuff is impossible with parameters, often this is why the DAC has "macro" functionality. Using parameters you should be aware of a Querys state a bit more than before. You can Prepare the query. It is at this moment the parameters are resolved to their types and such. So the parameters are handled as sub-objects of the query (application side) and there will be no "mixing them over queries" at all. FQuery1.Params[0] is not the same as FQuery2.Params[0]. No worries. So you write you query depending on RDBMS, DAC and in some cases even flavours of connection... You can re-use the same parameter name in the SQL more than once if the DAC supports it. Sometimes it's even allowed to use parameters in CTE's and in the select clause, for example SQL "select case when :SHOW_FULLNAME = True then table.full_name else table.shortName end as Name, table.code...". So no, you would not need "injection" just because it's a "filter". Once your query is prepared you can set the parameters and execute/activate. You do not need to unprepare to change the parameter values. Depending on DAC, after changing the parameter values, do Close/Open, RefreshAll or some such (this is what happens when you use TDataSets master-detail functionality, the detail is re-executed for each scroll on the master. So re-executing is faster than changing the SQL and executing (because it has to be prepared anyway)). That is why i use parameters. Efficiency. Let's say you have a REST server with 10 different queries all with parameters w/o need to "parse" the SQL. You can have them prepared, pick the correct Query from a pool, change the parameter, get the data and move on. Much more efficient than creating a new SQL for each request. This scenario works well in non-REST setups too. You can pool connections and/or queries. In my REST servers i pool entire DataModules with lots of queries. Then use either timeouts of DAC functionality to ensure that the RDBMS does not have unnecessary resources hogged. But hold that off until you are comfortable with the prepare stage and parameters. Security is another ballpark, IMHO, if you prefer to parse SQL's (or other stuff like HTTP requests and results) using Delphi string handling i think it's FINE as long as you put your head around what kind of data that can come in and how you should make sure no one can break you processes by entering faulty data and/or making strange requests. THAT should always be a concern even when writing a 20 line console app and it's not just for SQL. So "Do not inject" is a (bad) security advice that lacks a LOT of information and insight. HTH, /D RDBMS = Relational Database Management System, like Oracle, Firebird et. al. DAC = Data Access Components (BDE, IBX, FireDAC, IBObjects...) REST = internetty thing, OT LAMP = Linux, Apache, MySQL and PHP
  10. FPiette

    Show a FMX form inside a dll from a VCL application

    @dkounalAll I can says is that my code works for what I am doing with it. In the link @Remy Lebeaugave, it is stated that it is legal but full of traps. What I do is very simple in the relationship between the VCL exe and the FMX dll but probably doing more complex things require more code. The question you have to ask yourself is "Why in the first place do I need FMX?". In my case, FMX offer 3D model rendering and animation incredibly easy. I did a quick test and it worked fine. The VCL part was required because I already had huge VCL code for the everything else in the application.
  11. Darian Miller

    Several F2084 Internal Error on Delphi 10.4.2

    And now a patch for 10.4.2 is released!
  12. Darian Miller

    Several F2084 Internal Error on Delphi 10.4.2

    I agree that it's not doable to be fully comprehensive, but there are some major issues people should be aware of for each version. What might be useful is a list of major function topics and warnings next to each. For example, inline variables were introduced in 10.3 but should still be avoided as their usage breaks tooling. (32507, 33176, 33365, 22089) Another issue for those that rely on IDE Fix Pack would be a warning that's its not available for 10.4 but by 10.4.2 many features have been implemented. I remember being stuck at XE2, but I no longer recall what was broken in XE3 which preventing me from upgrading. We are currently in the seemingly never-ending chase of requiring to use the latest version for bug fixes, but the latest version always adds new issues. We end up with developers 'stranded' at particular versions because of major issues that they are waiting to be resolved. Eventually the perceived pain of upgrading accumulates until such time as someone decides to 'abandon ship' and switch to a different solution. This thread is an example - 10.4.2 follows with even more bug fixes than the 'quality' focused release of 10.4.1 and yet, two months after release, some people cannot use the product due to internal errors. I wonder how many developers thought that their specific pain points were finally addressed and they would upgrade to 10.4.2 and then got smacked in the face with this particular issue and finally raised the white flag (especially after waiting for months now.) For me 10.4.2 is their best release in a long while. But I'm also no longer managing complex projects with many millions of lines of code so I'm not running into this particular showstopper. However, I would really like to use inline variables, but until they fix the issues surrounding them (including the code formatter) then I refuse to use them. I assume the code formatter might be upgraded in the 10.5 release cycle and it'll take until sometime into 10.6 before it's solid so I assume inline variables are dead to me until sometime in 2023, or later. That's not intended as a slam, it's simply a reasoned forecast. Therefore it comes down to a new language feature being introduced in 2018 and forecasted to be potentially usable in 2023. Saying that out loud makes me sad and question my life choices...
  13. Remy Lebeau

    Show a FMX form inside a dll from a VCL application

    Not safely, no. Is it legal to have a cross-process parent/child or owner/owned window relationship?
  14. Vincent Parrett

    Find exception location from MAP file?

    I haven't tried this, but if you have the map file, you could use map2pdb and then use windbg to figure out where the exception occurred. As @David Heffernan mentioned, madEcept or Eurekalog are the way to go - they are invaluable for getting usable stack traces, I've fixed countless bugs in my code thanks to madExcept.
  15. robert83

    Android Auto Launch App ( Delphi 10.3.3 )

    @Rollo62 Hi , sorry it took a while , but I just continued development on this tool which requires auto start with the custom .dex And debug is working! I am using Delphi 10.3.3
  16. 14.5.0 + MSI_SysProcMon - Added process username to sampling data + TMiTeC_Display - added GPU property indicating GPU presence * TMiTeC_CPU - fixed cpu core and thread count detection + TMiTeC_CPU - added SocketCount and SocketDesignation properties * TMiTeC_SMBIOS - fixed cache size detection when its size exceeding word boundary For more information about the library, download locations and documentation, see the MiTeC System Information Component Suite Home Page
  17. What is Project Maker? MiTeC Project Maker is tool for automated batch Delphi projects building. With Project Maker, you can set compiler and its configuration, define actions processed before and after building, patch version information of built binary, sign this binary with specified certificate, apply 3rd-party software protection and many more. How does Project Maker work? Project Maker offers clear powerful interface for project building task definition. Every project can contain unlimited number of tasks. Task represents Delphi project, defined in dpr or dproj file. In addition Project Maker features Profiles, where you can define common properties for project. The project can have unlimited number of profiles. Using profiles you can simply switch between variety of build configurations. Who is Project Maker targeted on? Project Maker is targeted on developers who need to make various build scenarios and make repeated actions automatic. Project Maker is simple but powerful and provides one-click building of very complex and dependent projects. For more information see https://www.mitec.cz/pm.html
  18. Stano

    Delphi books

    I have these books. I think they are all free. I can send. I have only read a few. Baoquan Zuo Delphi Documentation Guidelines XML.pdf Borland Database Application Developers Book Delphi.pdf Breveglieri Marco Delphi Succinctly.pdf Cantu Marco Delphi 2009 Handbook.pdf Cantu Marco Object Pascal Handbook.pdf Cantu Marco ObjectPascalHandbook BerlinVer.pdf Cruysberghs Stefan Debugging techniques in Delphi.pdf Doeraene Sébastien Generics with Delphi 2009 Win32.pdf Gabrijelčič Primož Delphi High Perfomance.pdf Glowacki Pawel Expert Delphi.pdf Hodges Nick Coding In Delphi.pdf Hodges Nick More Coding in Delphi.pdf ObjectPascalHandbook SydneyVersion Complete.pdf Sedgewick Robert Delphi - Algorithms.pdf TsiLang Users Guide Lokalization application EN.pdf
  19. We are glad to announce that the 4.84 StyleControls VCL has just been released! http://www.almdev.com StyleControls VCL is a powerful, stable package of components, which uses Classic drawing, system Themes, GDI+ and VCL Styles. This package contains the unique solutions to extend standard VCL controls and also has many unique, advanced controls to create applications with UWP / Fluent UI design.
  20. I don't know what you draw on screen, but have you considered off-loading everything to the GPU? Much like a game.
  21. Here is my try. I've changed a lot in existing code (mentioned early comparers, equality comparers, etc.). Also, I've replaced returned string type in functions by PString, just because otherwise string handling takes too much time and algorythms comparison becomes not interesting. As well I've added my own minimalistic implementation of hash maps (not universal). mapstest.zip
  22. As I already said - the high constant factor with the RTL hash function is the problem - both TDict and Spring with faster equalitycomparer from Tiny.Library - results from an i5-3570 @ 3.4GHz Also testing in the global main is garbage because you are then using global variables that cause way less optimal code - fixing that (simply put all that benchmark code into a procedure) and you get the following results Win32: Get Name from ID (Search by integer): records Sequenced TArray.BinS TDict CustomBinS TSynDict Spring 10 26 375 25 24 32 27 50 56 447 25 29 32 26 100 83 473 26 32 35 25 1000 535 585 28 83 37 26 10000 5561 753 46 130 44 30 Get ID from Name (Search by string): records Sequenced TArray.BinS TDict CustomBinS TSynDict Spring 10 21 382 28 12 30 27 50 109 466 24 18 28 25 100 206 491 24 23 31 26 1000 2044 603 30 88 39 30 10000 20532 810 36 181 49 36 Win64: Get Name from ID (Search by integer): records Sequenced TArray.BinS TDict CustomBinS TSynDict Spring 10 24 297 26 23 32 26 50 60 323 26 30 31 26 100 94 328 26 40 32 26 1000 752 381 28 85 47 28 10000 8619 427 33 128 47 30 Get ID from Name (Search by string): records Sequenced TArray.BinS TDict CustomBinS TSynDict Spring 10 61 306 24 30 27 24 50 304 342 23 41 31 22 100 620 347 23 51 31 23 1000 6466 426 31 127 52 30 10000 64263 552 38 237 58 36
  23. I have the same problem, finally I switched to "Delphi (Classic Code Insight)" and it works fine. But now it's a bit annoying that after doing a "Find Declaration" in the Code Editor, the cursor every two seconds shows the hourglass.
  24. As David wrote, mORMot has a 3 license - if you use MPL it is very commercial-project-friendly. TL&LR: Nothing to pay, just mention somewhere in your software that you used it, and publish any modification you may do to the source code. Another article worth looking at: https://www.delphitools.info/2015/03/17/long-strings-hash-vs-sorted-vs-unsorted/ It depends what you expect. Also note that for long strings, hashing may have a cost - this is why we implemented https://blog.synopse.info/?post/2021/02/12/New-AesNiHash-for-mORMot-2