Jump to content

Steve Maughan

Members
  • Content Count

    143
  • Joined

  • Last visited

Posts posted by Steve Maughan


  1. 16 hours ago, Remy Lebeau said:

    Is there an error message?  And you didn't answer my question - which version of Delphi are you using?  Nothing in the code you have shown should be accessing any monitor-specific functionality, AFAIK.

    Yes.

    Hi Remy,

     

    I'm using Delphi 10.4.2.

     

    We have been unsuccessful in replicating the problem, although I did see it for myself on a Zoom call. At this point I'm going to move on and class it as a strange setup issue.

     

    Thanks — Steve 


  2. 2 minutes ago, Anders Melander said:

    So you haven't tried to reproduce the problem with two monitors...?

     

    Yes.

    If you had looked at the source you would have seen that TControl.ClientToScreen calls TControl.GetClientOrigin which ends up calling Winapi.Windows.ClientToScreen(Handle, Result);

    The ClientToScreen API function returns the coordinates relative to the top left corner of the primary monitor, which is what you'd want.

    I don't have an extra monitor but a colleague has one so we're trying to reproduce. It seem the problem occurs in a configuration of two monitors above the main screen / laptop screen. 


  3. 1 minute ago, Remy Lebeau said:

    Which version of Delphi are you using?  TControl.ClientToScreen() does not take 2 integers as input, it takes either a TPoint or a TRect.

     

    But, fixing that, the rest of the code shown works fine for me on my 2-monitor system.  So, unless there is a bug in your Delphi's VCL, this should work just fine, since ClientToScreen() returns screen coordinates, and Popup() takes screen coordinates.  Screen coordinates are within the Virtual Screen, not any particular monitor.

    Thanks Remy, I am actually passing a TPoint (my error when creating the code example). The user is reporting that the application crashes when they right click, and it's corrected when they only have one monitor. Does ClientToScreen work in all cases when the extra monitor is above, below, left and right of the main screen?

     

    Steve


  4. I have a popup menu on a TPaintBox. Up to now I've used the simple code:

    PopupPoint := PaintBox.ClientToScreen(X, Y);
    RadialMenu.Popup(PopupPoint.X, PopupPoint.Y);

    It seem this doesn't work on multi-monitor systems — the Radial Menu isn't visible after the popup and the user thinks the application has crashed. 

     

    How do I adjust this so it works with multiple monitors? Thanks!

     

    Steve


  5. Hi Felix,

     

    For those unaware of the subject area, I assume you're talking about the chess engine Stockfish.

     

    You're going to need to run a console app (stockfish) and then capture the output. For VCL apps you can use DOS Command. It's in GetIt. I'm not sure of this is available for Firemonkey.  

     

    I hope this helps.

     

    Steve

    • Thanks 1

  6. 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;
    
        try
    
          //-- Process if assigned
          if assigned(xNotification) then
          begin
            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';
            NotificationCenter.PresentNotification(xNotification);
          end;
    
        finally
          xNotification.Free;
        end;

    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"

     

    Thanks,

     

    Steve 

    n1.png

    n2.png


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

     

    Steve


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

     

    Thanks,

     

    Steve


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

     

    Steve

    • Thanks 1

  10. 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 1

  11. 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:

     

    Booot:

    booot6_4_release.rar (dropbox.com)

     

    Open-Critter:

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

     

    Durandal:

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

     

    Steve

    • Like 2
×