Jump to content

Uwe Raabe

Members
  • Content Count

    2555
  • Joined

  • Last visited

  • Days Won

    149

Posts posted by Uwe Raabe


  1. 21 minutes ago, dummzeuch said:

    create a version info resource externally and link it to the executable

    That is actually what my build server (resp. FinalBuilder) does here. That is only one reason, why I avoid creating any exe on my development system and send it to a customer.

     

    Just now, Attila Kovacs said:

    However, this issue should also be addressed in the IDE itself. At the very least, they should consider hiring that expert and incorporating their solution into the IDE.

    I would love to see a reliable solution in the IDE itself. For compatibility reasons I suggest to add a special entry to the configuration combo which handles the storage in the base configuration and clear all child configurations.

     

    One has to remember that the version info dialog for Win32/Win64 only projects differs from those targeting other platforms, too. The former can handle that in the base configuration, while the latter has to do it in the platform bases. The reason is that different platforms follow different rules.


  2. It affects all TButtonControl descendants of which TCheckBox is just one.

     

    The easiest way to avoid that is to use actions. 

     

    Another way would be to make use of the (protected) ClicksDisabled property, which skips the call to the event handler. That is basically the same as what the actions do.

    • Like 2

  3. This can be easily solved by converting to string before calling the constructor:

    JSonObject.AddPair('Test', TJSONNumber.Create(High(UInt64).ToString)); // add System.SysUtils to uses clause

    If the UINT64 value is already correct in the JSON string it is properly converted to an UNIT64 later.


  4. I have to revert my statement: Currently not even creation of a UINT64 is supported.

     

    Nevertheless, the values are always stored as string, so no restrictions apply here. It is the responsibility of the developer to do the conversion needed.

     

    For completeness I suggest to create a QP request. Internally it needs just some extension to the case statement in TJSONString.AsTValue.


  5. Licenses are bound to the machine name, so you probably have to use your serial to register online on the new system. This should work for a certain (low) number of times after which you need to ask for a registration bump. If you have an active subscription you can contact support for that, otherwise you need to ask sales for a bump. 


  6. 8 hours ago, Attila Kovacs said:

    inherinting the settings from above.

    Unfortunately, changing any version information values at least once will break inheritance and the values in that build configuration have their own life. There is no built-in way to establish inheritance - unless the entries are removed from the dproj with some exterenal tool.

     

    That is the reason why Project Magician has this option 

    Quote

    Clear Settings in Child Configurations

    Sometimes the inheritance of settings implemented the project files is not wanted and leads to a lot of work or unexpected results. For instance having different version info values for each build configuration is rarely required. Changes made to one configuration are not visible in others. In addition inheritance doesn't work well with these either. Changes in the base configuration have no effect if values in depending configurations exist.

     

    This functionality removes all child settings reverting back to the base settings. Only the base settings are used and changes to depending settings are ignored!

     

    Version Info

    All version info settings in child configurations are removed and the base settings put in charge again. The only exception are the Module attributes, allowing different attributes per build configuration. For pure Windows projects the settings in the base configuration will be kept, while for mixed OS projects the settings in the platform base configuration will serve as a basis.

     

    Application Settings

    All application settings in child configurations are removed and the base settings put in charge again. This effects the Icons, Manifest File, Output Settings and Appearance. Application settings are always platform based and thus the settings in the platform base configuration are the ones to be kept.

     

    Package Settings

    All package settings in child configurations are removed and the base settings put in charge again. This effects the Prefix, Suffix and Version as well as the Description and Never Build option.

     

    • Like 1
    • Thanks 1

  7. I would also recommend doing it in one step to the most recent version. Just make sure to disable all new features like VCL Styles or High DPI support (which is enabled by default). Using the IDE in highdpi:unaware mode may also simplify ones life in case one has a high dpi system for development.

    • Like 2

  8. On 7/17/2023 at 1:15 AM, David Schwartz said:

    Delphi Component Design

    by Danny Thorpe

    https://amzn.to/3K2hzwm

    (I don't know why this book is so frigging expensive everywhere, maybe b/c Danny is no longer with us. It's an excellent book and worth grabbing a copy if you can get one cheap.)

    I luckily managed to grab a copy in good condition (including CD) for unbelievable 12.38€ - sometimes it pays to have relatives in the U.S.

    Now I only have to wait for them visiting us in November, but looking at the ~65€ they tried to charge for shipping it to Germany that is definitely the better option.

    • Like 1

  9. 1 hour ago, Der schöne Günther said:

    I learned that the IDE will also get confused when you have two or more projects in a group (call them "A" and "B") and when you have a frame "TMyFrame" in both project "A" and "B".

    That is not limited to frames, but affects forms and data modules, too. Looking for external links is done by component names - thus the first found wins.

     

    One could argue that this could be extended by inspecting the unit names available in the uses clause, but it is just the other way round: When the (wrong) component is found by name, the (wrong) unit name is automatically inserted when it is not available in the uses clause already.

     

    The designer part of the IDE is a mighty and sophisticated invention, but it has its limitations. What can be done is not nearly the same as what should be done.


  10. Looks like as designed:

    Quote
    • Detailed: Produces a map file that includes a list of segments, the program start address, any warning or error messages produced during the link, a list of alphabetically sorted public symbols, and an additional detailed segment map. The detailed segment map includes the segment address, length in bytes, segment name, group, and module information. Also produces a resource string file.

     

    • Thanks 1

  11. 3 hours ago, dummzeuch said:

    Unfortunately I have so many different installations on various computers, that every time I remember using that feature, the template is on a different computer.

    At least recent versions of Delphi allow adding repositories located at arbitrary places. So if various computers have access to a common network share, you can use that for your templates. Alternatively one can manage these repositories and its templates with version control as with any other sources like f.i. common library code.

    • Like 1

  12. Alternatively create a new project and save it (best with decent file names). Then select Project - Add To Repository from the menu, select a proper place to add and type some nice names. After that you can select File - New - Customize to add the new entry to the favorites.

     

    As a gimmick you are directly asked for a target folder after selecting your project from the repository.

     

    Also, when all your VCL projects have a main TForm and a main TDatamodule and a separate TDatamodule with a TImageCollection, you can prepare that before adding the project to the repository (or create a separate entry for that) and you may save quite some more clicks and keystrokes.

    • Like 2
×