Jump to content

Steve Maughan

  • Content Count

  • Joined

  • Last visited

Posts posted by Steve Maughan

  1. I've added a TNotification to my application. After it completes a relatively computationally intensive task it creates and displays the notification using the following code:

      	//-- Create it
        xNotification := NotificationCenter.CreateNotification;
          //-- Process if assigned
          if assigned(xNotification) then
            xNotification.Name := 'Optimizer';
            xNotification.Title := 'AlignMix AI Optimizer';
            xNotification.AlertBody := IntToStr(OptScope.TerritoryCount) + ' '
              + Project.Alignment.Territory.TerritoryNamePlural
            	+ ' created in ' + FormatFloat('#,##0.0', StopWatch.ElapsedMilliseconds / 1000) + ' seconds';

    However, when the EXE is run for the first time outside the IDE the notification has a rather odd caption "Embarcadero.DesktopToasts.02911170" (see image attached). On subsequent runs it has the executable name, minus the ".exe" extension (see image attached).


    How can I customize the notification caption? I'd like it to simply say "AlignMix"







  2. 1 minute ago, David Schwartz said:

    I did not use the Migration Tool for either 10.4.x upgrade and everything worked as expected, except this one deleted but did not re-install the GetIt libs. (My TMS libs remained intact.)

    Hi David,


    Does your app target Win64 or just Win32? My Win32 component path was fine, it was my Win64 component path that was scrubbed.



  3. I have a confession: I'm terrible at ensuring there are no Hints or Warnings in my code. That's all got to stop now that I have switched to 10.4.2 — the IDE now scream at me to fix these Hint and Warning (that's a good thing)!


    One hint that crops up a lot in my code is H2443 Inline function. Typically it says something like:

    H2443 Inline function: TOptimizer.Execute has been expanded because unit 'TAnneal' is not included in the USES list

    What is this all about? Clearly the code runs without TAneal in the USES list and I like to minimize the number of units in the USES list. The hint goes away if I add TAnneal to the USES list but what's the advantage of including it — my code is cleaner and runs just fine if I don't include it.


    Also, does anyone have a tutorial on getting rid of Delphi Hints and Warnings? Some are obvious, others (like this one) are not so obvious.





  4. As I posted elsewhere, the new install scrubbed my Win64 library path. That was the only problem I encountered. Overall it seems like an excellent, quality orientated upgrade. I ran my mapping application through some speed tests and it definitely seems to be running faster when compiled with the latest version — about +4% faster.



    • Thanks 1

  5. 1 hour ago, Rollo62 said:

    I believe so too, but DeepBlue is worth mentioning, isn't it ?

    Isn't this evolving too, with never versions, or is it a complete dead project now ?

    At least it was the first beating the human chess wolrd champion, should be a little honoured IMHO.

    Deep Blue was IBM’s pet project from the late 90’s and has never been available for public scrutiny. It’s estimated strength is about 2800 ELO. To put this in context, if the latest Stockfish, running on a iPhone, played 100 games against Deep Blue it would win at least 95. 

    • Like 2

  6. I'm reasonably well know in the field of computer chess and competed in the 2015 World Computer Chess Championships. Although Delphi is my first language, my engine was written in plain old "C". However, there are a number of strong open source chess programs written in Delphi. Here are a few:



    booot6_4_release.rar (dropbox.com)



    GitHub - rchastain/open-critter: UCI chess engine written in Pascal by Richard Vida



    GitHub - rchastain/durandal: UCI chess engine written in Pascal



    • Like 2

  7. If I run my application in debug mode and then exit the application, I get a small dialog informing me "Debug process not initialized" — see screenshot. I then have two buttons: "OK" and "Details". When I click "Details" I can see the MadExcept error report. I can't see anything obviously wrong. 


    Does anyone know how to fix this? All help appreciated!


    I'm using Delphi DX 10.4.1  





  8. 18 hours ago, David Heffernan said:

    I can't understand why you would. Aren't you likely just to end up changing your code for no reason, given that the defect is almost certainly not in your compression library?

    I won't change my library but I'd still like to be aware of any newer, and maybe better, libraries. Having had a quick look it seems to be third party. I had thought it was shipped with Delphi since it was System.Zip2. I try to minimize the use of third party components so definitely won't switch, or even look any further.

  9. 17 hours ago, David Heffernan said:

    They are. 


    That's the a very plausible explanation. File corruption is something that does happen. 


    You'll want to reproduce the issue before trying to solve the problem. And if it is file corruption then the solution is somebody else's problem.  

    Thanks David — all good advice. I was really looking to see if there were a list of known bugs with the ZCompressStream. It seems file corruption post saving is probably the most likely explanation.

  10. My application saves data as a compressed JSON file. I use the standard System.ZLib routines ZCompressStream and ZDecompressStream to handle the compression. I thought these were just a wrapper around standard ZLib routines.


    Earlier today someone sent me an application file that couldn't be opened. It turns out it couldn't be decompressed. It could have been corrupted after being saved. The decompression routine went into some sort of endless loop when it attempts to open the file.


    My question is: does anyone know of any problems compressing data using ZCompressStream? I'm using Delphi DX 10.4.1.


    Are there any other third party ZLib compatible compression and decompression routines?



  11. 30 minutes ago, Steve Maughan said:



    So how do I access the files? I would have assumed Windows would provide the virtual path when I call:


    Is this not the case?



    I've now updated the API to get the common data path to:

    result := IncludeTrailingBackslash(TPath.GetPublicPath)

    I thought that would fix it but unfortunately not — the application is still not seeing the virtualized folder.