Jump to content

A.M. Hoornweg

Members
  • Content Count

    446
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by A.M. Hoornweg

  1. A 64-bit process can only load 64-bit designtime packages, so it would be a huge breaking change. Having said that, the very fact that designtime packages are loaded into the IDE process itself is also its Achilles heel. Errors in a package can bring down the IDE. It would be nice if that were no longer the case.
  2. Hello all, On 23 june 2023, new security requirements for storing code signing certificates will come into force. I quote the most relevant change: "Effective 1 June 2023, the code signing certificate key pair must be generated and stored in a hardware crypto module that meets or exceeds the requirements of FIPS 140-2 level 2 or Common Criteria EAL 4+. This means the key pair will be generated in a device, where the private key cannot be exported. This will help to minimize the private key compromise." https://securityboulevard.com/2022/05/ca-browser-forum-updates-requirements-for-code-signing-certificate-private-keys/ As far as I can judge, this is highly disruptive. Our company has multiple developers that work remotely much of the time and we need to be able to rollout software updates in a timely fashion. It would very much interfere with our deployment processes if we are no longer allowed to store the keys on our development machines. Your opinions on this?
  3. Is there a "build event" set in any of these projects? That would execute a background program upon a full build.
  4. A.M. Hoornweg

    Unicode weirdness

    Is this a one-time problem for OP, and is this the only encoding he will encounter?
  5. A.M. Hoornweg

    Unicode weirdness

    Just open the extracted *.txt files in Notepad++ and try out the different encoding options that this program offers until the files display correctly. Then save them as "unicode with bom". tStringlist.loadfromfile will load the files correctly even if they countain foreign characters.
  6. A.M. Hoornweg

    Offline Help updates available from Embarcadero

    Aren't you running out of environment space for path variables etc ?
  7. A.M. Hoornweg

    Offline Help updates available from Embarcadero

    I have an idea that might work. There's a service called "the internet archive" where people can archive snapshots of internet sites to prevent them from disappearing . I see that somebody has archived the Delphi 10 Seattle docwiki in 2018: https://web.archive.org/web/20180825012640/https://docwiki.embarcadero.com/RADStudio/Seattle/en/Main_Page In the left side-bar of that page, you'll see links to older Delphi versions going back to version 2010. These links will initially trigger a http error 301, then after a few seconds they redirect to an archived version which is functional! By following these older links, I can reach the following pages: Delphi 2010: https://web.archive.org/web/20190507085636/http://docwiki.embarcadero.com/RADStudio/2010/en/Main_Page XE: https://web.archive.org/web/20210513170545/http://docwiki.embarcadero.com/RADStudio/XE/en/Main_Page XE2: https://web.archive.org/web/20190709193313/http://docwiki.embarcadero.com/RADStudio/XE2/en/Main_Page XE5: https://web.archive.org/web/20180920190325/http://docwiki.embarcadero.com/RADStudio/XE5/en/Main_Page XE6: https://web.archive.org/web/20190709093357/http://docwiki.embarcadero.com/RADStudio/XE6/en/Main_Page XE6: https://web.archive.org/web/20190709093357/http://docwiki.embarcadero.com/RADStudio/XE6/en/Main_Page XE7: https://web.archive.org/web/20190508184802/http://docwiki.embarcadero.com/RADStudio/XE7/en/Main_Page
  8. A.M. Hoornweg

    Offline Help updates available from Embarcadero

    Does a Docker-like solution exist, that allows a user to "package" a Delphi version and "map" it into the system when necessary? Delphi installations are simply too huge to keep more than a few installed and archiving a whole VM for each Delphi version is overkill.
  9. A.M. Hoornweg

    Offline Help updates available from Embarcadero

    Correct, with a caveat "Attention: Online documentation for versions earlier than Seattle is currently not available. You can refer to the help file installed with the product." This is a p.i.t.a. if one wants to write code that correctly compiles with older versions of Delphi.
  10. A.M. Hoornweg

    Offline Help updates available from Embarcadero

    There are some serious issues on that page. Especially with the "wiki" links. If I click on any "what's new" link of an old Delphi version because I want to find out which features were introduced in that version, it always leads me to the Alexandria wiki pages. Very disappointing. Has Embarcadero suffered a data loss of old wiki versions ?
  11. Hello all, I'm having the worst of times trying to get remote debugging to work between a VMWare virtual machine (running Delphi 11.3, Windows 11 prof) and the host machine itself (Also Windows 11). I have disabled the firewalls on both the host machine and the VM so these won't interfere. I've installed PAServer of Delphi 11.3 on the host machine, then started PAServer, not specifying a password. In the VM I start Delphi, select Run -> Attach to process -> then select "Embarcadero Windows 32-bit debugger" -> Remote machine. I create a new profile that connects to the host machine using the correct IP address, press "test connection" and it says "connection succeeded". So far, so good. But when I press "Finish", Delphi freezes for a while, then says "unable to connect to remote host". I've also tried starting both PAServer and Delphi as administrator. It makes no difference. The remote debugging functionality seems totally broken. And by the way - how does one *delete* PAserver profiles? The drop-down list is getting full and I want to get rid of them.
  12. A.M. Hoornweg

    Win32 remote debugging broken on Windows 11 ?

    I de-installed and re-installed PAServer on the host machine and re-started the computer several times. Now, all of a sudden, the connection succeeds!
  13. A.M. Hoornweg

    Creating FMX controls in a background thread

    Besides multi-threading, multi-processing would be an option. Modern browsers use separate processes for each tab but for the user they still look like they're part of one and the same application. Here's an example on how to host an external process in a Delphi form: https://alt.lang.delphi.narkive.com/dXS11op1/external-application-from-within-a-delphi-form
  14. A.M. Hoornweg

    Creating FMX controls in a background thread

    No it isn't. Because it isn't stateless. For example, if you draw a shape by a sequence of lines: MoveToEx (hdc,100,100,NIL); LineTo (Hdc, 200,200); LineTo(Hdc, 10,100); the commands draw contiguous line segments because each segment starts at the position where the previous command ended. If multiple threads draw in parallel on the same Hdc, that is not the case anymore.
  15. A.M. Hoornweg

    Delphi 11.3 is available now!

    I did not need to recompile my third-party 11.2 packages (TMS Components, LMD Components, Intraweb), so I guess 11.3 is binary compatible to 11.2. I certainly wouldn't mind having a thorough 2-pass compiler producing fast and tight executables for release mode. But during development and debugging I prefer F9 to be fast.
  16. A.M. Hoornweg

    Delphi 11.3 is available now!

    I suppose that would make 11.3 binary incompatible to existing packages. Can serious optimization be done by a single pass compiler anyway?
  17. Run a "command prompt" as administrator (=elevated). Enter the command Net Stop SPOOLER and confirm with the Enter key. Enter the command Del c:\windows\system32\spool\printers\*.* and confirm. This will delete old print jobs. Enter the command Net Start SPOOLER and confirm. Close the command prompt window. You can easily put this code into a batch file (*.cmd), but remember that it must be run in elevated mode. You can also write a Delphi program that performs the same steps, but its "bitness" should match that of your Windows version and the manifest must specify the execution level "require administrator".
  18. Hello World, I notice that tList<T> has a terrible growth strategy, it basically does "TListHelper.InternalGrow(count + 1)" whenever an item is appended, there is no granularity and in very large collections the overhead can become undesirable. It is not possible to use the OnNotify event to check and increase the capacity before the insert, because TListHelper "forgets" to send the the notification cnAdding before it inserts. That value exists but is never used. Instead, it sends cnAdded after the fact. Sure it's still possible to check and increase the capacity at that point, but it's not optimal. In my opinion, it would be better if tListHelper would simply send a cnAdding notification before inserting. I can still inherit from tList<T> and override/reintroduce the Add method by a new one that takes granularity into account, but in my opinion it's kinda un-elegant because the base class already has a notification feature that could be used to achieve the same thing. I'd love to hear the opinion of the Delphi community on this!
  19. A.M. Hoornweg

    Tlist<T> growth strategy is bad.

    Please ignore my previous post. It appears I was incorrect about my assumption that the size of the list is always increased by one, it uses "GrowCollection" from unit Sysutils which is a more clever strategy.
  20. A.M. Hoornweg

    Object files for Google Snappy C API?

    Hello all, does anyone know where to find compiled *.obj files of Google's Snappy compressor for the output platforms that Delphi 11.2 supports? The ones I have are outdated and incomplete and I'm unable to compile them myself.
  21. A.M. Hoornweg

    Object files for Google Snappy C API?

    The object files compiled by Roberto Della Pasqua are the outdated and incomplete ones which I have. There is no support for 64 bit platforms other than Windows and the return value type of one of the functions has changed since 2016.
  22. A.M. Hoornweg

    New security requirements for code signing, disruptive ?

    In the case of VMWare, the "hardware identity" of the machine is determined by some entries in the *.VMX file which can be manually edited as long as the VM is unencrypted. These entries are "uuid.bios" and "uuid.location". The VM's MAC addresses are also derived from these ID's. It is vital to set uuid.action="keep" if you want to force VMWare to maintain the hardware identity of a VM if it is moved to a different host machine.
  23. Hello all, does anyone know a nice algorithm that will connect the points in a polygon in a rounded fashion? Its intended use is a contour map. The polygon must go through all vertices but I'd like to avoid sharp corners for a more natural look; it's OK if the lines between the vertices are slightly curved. The few solutions I found on the internet tend to bend without touching the vertices.
  24. Certainly not! But if the Delphi object represents a document or record in a database, backing up old versions on disk is often possible. A colleague of mine has written a reporting tool that does precisely this.
  25. A classical way to achieve undo/redo is if your object can serialize itself, for example using XML or Json. That way you can keep the last xxx modified versions of the object in a temporary folder on disk.
×