Jump to content

Uwe Raabe

  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Uwe Raabe

  1. Uwe Raabe

    Something the comunity should be aware of

    The license text inside ELC stays the same. The list in License Manager after importing the new slip file should show 10.4 Sydney.
  2. MMX version 15.0.15 now supports Delphi 10.4 Sydney.
  3. Uwe Raabe

    Something the comunity should be aware of

    Open the ELC web interface and go to License Hosting. Enter your credentials and the certificate as given by Embarcadero. Click Host Licenses. Select the proper license and again click Host Licenses. Got to Licenses. Click on License Files and download the slip files (zipped). Extract the named license slip file. On each installation open License Manager and import that slip file.
  4. Uwe Raabe

    TDBImage descendant

    You should be aware that assigning to TPicture.Graphic will create an internal copy of the source (see TPicture.SetGraphic), so you get a memory leak with the above code. As TPicture.Assign also uses SetGraphic internally, the above ist still valid for that one. Not refreshing the display may have a different cause.
  5. Uwe Raabe

    Something the comunity should be aware of

    Right. You only need to contact the Embarcadero Server when you register your Network License with your ELC instance and when this license get updated while your are on Update Subscription. I am not sure if I understand you here. As I said above: you need to register your Network License once when you enter it into your ELC Server instance. You also need to update this License whenever a new Delphi version is released and your license is still under Update Subscription. Without any Update Subscription the Network License stays valid inside your ELC Server. What do you mean with renew license of older versions? I still don't get the meaning of this term. AFAIK, any valid Delphi license up to a recent version also covers all previous versions down to Delphi 2007. At least my own licenses do. I also don't get the IP address issue. The ELC server is not bound to any IP address. Only the server name must rename the same. That is similar to the normal Named Workstation license, which is also bound to the computer name. I haven't been in the need to try, but it should be possible to re-install the ELC Server with the given login credentials and certificate number (optional) as long as the server name matches the previous one. I can't help and I don't mean to insult, but your arguments feel like just trying to forcibly construct a broken system where nothing is broken in the first place.
  6. Uwe Raabe

    Something the comunity should be aware of

    That is not true! Installations are not limited. The restriction is that you can run multiple instances of the same IDE version (10.2 and 10.3 are different versions) on up to three different machines at the same time. That is you can run Delphi 10.3 on the same machine (as many as it can cope with) and still start Delphi 10..3 on two more VMs or physical machines, where each can run multiple instances. Together with that you can run Delphi 10.2 instances on up to three different machines, be it the a same as above or others. You just have to make sure that all these machines can connect to the ELC Server and you are logged in at these machines with the same user name the license is bound to (you can change that yourself in the ELC Server). My installations are spread over dozens of VMs and I never reached that 3-instance-limit.
  7. Uwe Raabe

    Something the comunity should be aware of

    Not sure how you do, but I have always just copy the Delphi 7 license data to another machine without any further registration. Actually I guess that Delphi 7 is not even covered by the ELC server - it is just way too old. At least you should still have the original CD, so no need to download. Also, I am not sure what the term renew their licences actually means in this context. Is this just registering a license or is it bumping the registration count? It is not even clear what Marco is saying to be taken away from former customers. He just says you lose access or download options. Well, he will have a hard timer to stop you to access your Delphi installation on your system. And again, move your Delphi installation into a VM and take care of backups. No need to install again, no need to register again and no need to bump your registration count. Perhaps you should tell your customers to do the same. BTW, I wonder how many software companies still provide installation files for like 20+ years old software - at no cost. (most of those companies probably don't even exist any more)
  8. Uwe Raabe

    Something the comunity should be aware of

    That is not what can be read in that comment. I cannot see anything about licenses being invalidated or not being able to compile old code. Even the question does not imply that. It is only about downloading the setup files, isn't it? If my business were founded on the fact to be able to download old Delphi installation files I would do something wrong in the first place. I suggest to install old Delphi versions inside a VM and have a good backup strategy for those - like many people I know are already doing for years now. In case someone is worried about not being able to register a valid license later, the solution can be to convert the Named User license into a Network Named User license. That requires an ELC server installed somewhere in the local network, but it simplifies registrations a lot. License bumps are no longer necessary with that. Moving a Delphi installation to a new machine boils down to installing it and importing a slip file. My own situation covers quite some of your points. I have old software that has to be maintained (if at all) with old Delphi versions. Some of my customers are stuck with an old Delphi version, so I am regarding their projects. I see no problems in any of those. Even if Embarcadero would be hit by a comet, I would be able to work for plenty of years. No! If anyone would be affected there are ways to prepare for it and be safe. No problem and I think it is fair. There is plenty of other software where it is impossible to get old installation files now. I can still remember times when software was delivered in CD or even Floppy disks. We were used to make backup copies of those in case they will break and the vendor would charge for a replacement CD - if even offering that at all. One can do something similar for ISO images. Having that said, the other points are just meaningless.
  9. You can also check the dproj file the DesignClass and FormType values to be correct. <DCCReference Include="Unit527.pas"> <Form>DataModule527</Form> <FormType>dfm</FormType> <DesignClass>TDataModule</DesignClass> </DCCReference>
  10. Uwe Raabe

    Revisiting TThreadedQueue and TMonitor

    I guess David is referring another assembler sequence.
  11. Uwe Raabe

    Rx10.4 new feature blogs

    The maintenance confirmation mail and the support terms say: There is a difference between the Primary Contact (the one who pays the bill) and Authorized Contacts (the developers using the product). So tell the person in charge in your company to assign you as an Authorized Contact.
  12. Uwe Raabe

    Revisiting TThreadedQueue and TMonitor

    For Windows 8+ there is InterlockedCompareExchange128
  13. Yes, because the reference to tPolar2D is only inside tPoint2D, which still has to be declared after tPolar2D. The benefit of the operators is the ease of conversion by assignment. This is the (corrected) declaration with some example assignments (TBD: calculations): type tPolar2D = record Radius: Double; azimuth: Double; end; type tPoint2D = record x: Double; y: Double; public class operator Implicit(A: tPoint2D): tPolar2d; overload; class operator Implicit(A: tPolar2D): tPoint2D; overload; end; class operator tPoint2D.Implicit(A: tPoint2D): tPolar2d; begin Result.Radius := ... Result.azimuth := ... end; class operator tPoint2D.Implicit(A: tPolar2D): tPoint2D; begin Result.x := ... Result.y := ... end; var cart: tPoint2D; pol: tPolar2D; begin cart := pol; pol := cart; end.
  14. What about operators: tPoint2D = record x: Double; y: Double; class function Implicit(A: tPoint2D): tPolar2d; class function Implicit(A: tPolar2D): tPoint2D; end;
  15. I can't help, but this looks like you are trying to make that dictionary construct work like a database.
  16. Well, that code is far from usable in production. F.i. you can still select that invisible control - at least if the space is not occupied by something else. I also get AVs when I unload that package.
  17. Uwe Raabe

    When computers try to be clever

    Gerrit Beuze, the original inventor of MMX Code Explorer, managed to provide sort of a Micro IDE to test things.
  18. Uwe Raabe

    When computers try to be clever

    IIRC, that functionality exists since Delphi 1. After 25 years someone finally managed to hit it. Congratulations.
  19. Quick-And-Dirty ( complete package attached ) unit HideControls; interface procedure Register; implementation uses Vcl.Controls, DesignIntf, DesignEditors; type THideControlsEditor = class(TComponentEditor) private procedure SetDesignVisible(Value: Boolean); public procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): string; override; function GetVerbCount: Integer; override; end; procedure Register; begin RegisterComponentEditor(TControl, THideControlsEditor); end; procedure THideControlsEditor.ExecuteVerb(Index: Integer); begin case Index of 0: SetDesignVisible(False); 1: SetDesignVisible(True); end; end; function THideControlsEditor.GetVerb(Index: Integer): string; begin case Index of 0: Result := 'Hide Control(s)'; 1: Result := 'Show Control(s)'; else Result := ''; end; end; function THideControlsEditor.GetVerbCount: Integer; begin Result := 2; end; procedure THideControlsEditor.SetDesignVisible(Value: Boolean); var I: Integer; list: IDesignerSelections; begin list := CreateSelectionList; Designer.GetSelections(list); for I := 0 to list.Count - 1 do if list.Items[I] is TControl then TControl(list.Items[I]).SetDesignVisible(Value); end; end. HideControlsAtDesignTimeDemo.zip
  20. Uwe Raabe

    TFrame and VCL styles [solved]

    I usually place a client aligned TPanel onto every TForm and TFrame with all borders removed and ParentBackground set to False. That way all forms and frames are drawn with the current styles panel color, which is usually the same as the form color.
  21. You might have a look at DataSnap Callbacks then: http://docwiki.embarcadero.com/RADStudio/Rio/en/DataSnap_REST_Messaging_Protocol#Heavyweight_Callbacks
  22. That should work with PerMonitor v2 as well. The application reads the DPI from the current monitor (even if there is only one) and scales accordingly.
  23. Yes, that is what the DPI options in Manifest are for. If you have multiple monitors with different DPI and a more recent Windows 10 version I suggest the Per Monitor v2 setting.
  24. Perhaps we are talking about different things. The settings for DPI awareness are only valid when running the application, not when designing it. A form designed with PixelsPerInch set to 120 is not scaled when opened In Delphi 10.3 on a system with PixelsPerInch=96. You already found that out. That is different to older versions and I am not aware of any setting to change that. You need to open the form with an older version of Delphi (still implementing this behavior) on the 96 dpi system, save the form with 96 dpi and you are good. In case you consider waiting for Embarcadero to fix this, there already is QP entry 15141 closed as Won't Fix.