Jump to content

Fred Ahrens

Members
  • Content Count

    32
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Fred Ahrens


  1. On 2/27/2024 at 1:19 PM, Vincent Parrett said:

    Virtual here stays connected until you tell to disconnect or the link goes down. Virtualhere client also has an "auto use this device" option so it will always be available.

    You can control the client via command line (see https://www.virtualhere.com/client_api). This allows you to create build scripts that temporarily activate the dongle on the client system only when it's needed for signing your files and deactivating it after when the script finishes.


  2. 1 hour ago, Vincent Parrett said:

    ... and more recently to proxmox (couldn't be happier).

     

     

    +1 for Proxmox. For a very long time I had the impression, it's an "enthusiasts platform for virtualization". One of our customers "forced" us to test our software under Proxmox and 1 month later most of our bare metal machines and VMs were migrated to Proxmox VMs and containers. Couldn't be happier too.

    • Like 1
    • Thanks 1

  3. For using the code signing dongles (or any other USB device) I recommend VirtualHere. Install the VirtualHere server in the host machine and your USB dongles/devices connected to the host can be accessed via a simple client within your VMs. It's not free but not expensive and just works.

    Meanwhile we switched from Hyper-V to Proxmox as it has built-in USB-pass-through and other features missing in Hyper-V. But main reason was: there is actually no longer a free stand-alone Hyper-V server as it got discontinued by Microsoft.

    • Like 1

  4. 3 hours ago, PhilPlus said:

     

    The problem is not so much the bug/fault on the site (it happens to everyone) but the time taken to resolve it. Not serious.

    For me it's the lack of communication. Errors happen, but at a certain stage they should start to communicate about the error and give some advice about expected timeframe for fixing the problem, possible workarounds and so on. I really don't care (that much) how long this takes - but it would be nice to get some regular updates about the progress made.

     

    We are now in a situation where we have to review our development environment and make it as independent as possible from the availability of Embarcadero servers. In result we have to stop using GetIt, and other services may follow.

    • Like 5
    • Sad 1

  5. Sorting units by name is dangerous.

    There are some units that need to be added at the end of the list, if they overwrite some behavior's of objects and functions of other units above in the list. There are other units that need to be placed on top of the list if they do some special initialization that needs to be done in the app as soon as possible, before any other parts of the app start to initialize.

    • Like 4

  6. I prefer Alternative 1 but I wouldn't use "else". Using "else" might slightly improve performance in some cases, but without the "else" I think the code can be parsed better during code reviews (gets closer to the readability of the version using the case statement).

    if aMessageType = 'EXPREG' then
      DecodeExportReg(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPACC' then
      DecodeExportAcc(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPERR' then
      DecodeExportErr(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPREL' then
      DecodeExportRel(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPREF' then
      DecodeExportRef(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPREQ' then
      DecodeExportReq(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPINF' then
      DecodeExportInf(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPREJ' then
      DecodeExportRej(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPCLA' then
      DecodeExportCla(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPCON' then
      DecodeExportCon(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPAME' then
      DecodeExportAme(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPIRJ' then
      DecodeExportIrj(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPARJ' then
      DecodeExportArj(vDoc, aCdn, aRequestCorrelation, aMessageText);
    if aMessageType = 'EXPHRT' then
      DecodeExportHrt(vDoc, aCdn, aRequestCorrelation, aMessageText);

    OT: just learned about the existence of IndexStr. 


  7. 1 hour ago, softtouch said:

    Delphi 11.3 always rearrange its toolbars with every start.

    The first attached image shows how it should look after I move them to their positions, the second image shows what Delphi 11.3 makes out of it. With every restart of the IDE, I have to rearrange the top toolbars 😞

    I am using a 4K monitor with a scaling of 125%.

    When I use Delphi DPI unaware, it stays always the same, when I use a monitor scaling of 100%, it always stays the same, but when I use a monitor scaling of 125% on my 4K display, it rearrange the toolbars.

    That did not happen in any version below 11.3 (11.0, 11.1, 11.2).

     

    Delphi_11_2023-02-28_08-33-04.png

    Delphi_11_2023-02-28_08-33-36.png

    This looks like a rounding problem in the function that calculates the toolbar sections.

    As a workaround you can try to move each section of the toolbar to the right while leaving gaps with some pixels width between all sections. This should avoid the overlapping of sections due to the calculation error and prevent moving toolbar sections to the next free line on the toolbar.
    (not tested just guessed)


  8. uses
      Vcl.ExtActns;
    
    procedure Download(URL: String; FileName: String);
    var
      DownloadAction: TDownloadUrl;
    begin
      DownloadAction := TDownloadUrl.Create(nil);
      DownloadAction.Filename:=FileName;
      DownloadAction.URL:=URL;
      DownloadAction.Execute;
      DownloadAction.Free;
    end;

    But no error handling at all.

    • Thanks 1

  9. Wow.

    We started using CDATA connectors already two years before Embarcadero started bundling it with some of the Delphi SKUs.

    I wasn't aware that license conditions have changed. I just checked and compared with older EULAs shown during the CDATA component installation and there wasn't a limitation to inhouse distribution only. The 2018 version of the EULA was more similar to typical other component packages - only the typical restrictions did apply.

     

    With this license change we'll have to stop using CDATA components. I guess we could afford to pay the costs for upgrading our existing licenses and bring them back to a royalty-free distribution model. Finally it would be a stupid investment as we don't know what other changes might be introduced in the licenses through the backdoor and might render our investment useless (again). I'll be happier with spending that money at other component developers who have a more developer-friendly business model.

    • Like 4

  10. The drivers are available for download at https://www.cdata.com/drivers/.

    You will need to choose the driver you want to download. At the top of the next page you will need to choose "Firedac" from the toolbar. On the next page click on "Download" and on the final page "Download Full". The "Download Full" button looks disabled but is working and downloads the licensed version of the driver.

    You will need your product key (it's the same for all CData drivers) for starting the download.

     

     


  11. Sometimes the source of such problems isn't obvious at all. A while ago while having similar problems for a long time I observed in the Events window in the IDE when starting the app, a dll belonging to my Razer headset got injected into the app and caused a lot of strange behavior. After uninstalling the headset's driver, everything went back to normal.
    Whenever I have similar problems, first I disable all non-essential programs in Task Manager > Startup. 

    Disabling Windows Updates isn't a good idea. I'm not talking here about security and 0day exploits. Assuming that most developers have the Windows Update set to normal settings brings you to the same level as other developers and will give you a better chance to find somebody who might have similar problems like you and who might already have a solution. 

    • Like 3

  12. For testing I uploaded your file to our own domain and still get the error while downloading it from there. So the source of the download doesn't seem to be the source of the problem. It seems to be a problem with the digital signature.

     

    It may help to add a second signature using sha1 digest algorithm. It won't hurt and will give you also some compatibility with downloading the file on older Windows versions. This will also change the checksum of your file and provides a good chance that it won't be detected again that has been flagged as critical due to unknown reasons.

     

    Some years ago we also used Comodo certificates. When we had similar problems it helped just to sign and upload the affected file again.

     

    Meanwhile we switched to DigiCert signatures and those problems went away. This also lowered false positive detection of our binaries by some virus scanners.

     

     


  13. I'm just guessing: It could be a problem that the file isn't downloaded from your domain but from storage.googleapis.com. At the end whenever another identified malware was downloaded via storage.googleapis.com your downloads are flagged as well as potential malware - you just don't have this under control as anybody can use this domain for downloads. I would try moving the downloads to your own domain.

    • Like 1

  14. Deep in the release notes I have seen some comments regarding the implementation of some of Andreas' patches directly into the official release. But I couldn't find any further info if this is the full feature set of the Fix Pack or only a few selected patches.

×