Jump to content

A.M. Hoornweg

Members
  • Content Count

    447
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by A.M. Hoornweg


  1. 16 hours ago, Clément said:

    Hi,

     

    Have you tried the new patches?
    http://blog.marcocantu.com/blog/2019-august-more-patches-update-getit.html

     

    HTH,

    Clément

     

    No. GetIt itself does work now and shows me lots of libraries, but Delphi 10.3.2 Rio is unable to automatically download/install the Android SDK.

    If anyone buys & Installs Delphi now (from the iso) with the intention of developing for Android, he'll be disappointed.

     

    Regards,Arthur


  2. I recently had the case that an update of a third party library "patched" a VCL routine and replaced it with a different one for speed reasons, only the new routine turned out to be buggy. This caused a program of mine to suddenly behave erratically.  It took me and the author of the library quite some time to figure it out...  

     


  3. Just an idea how you can quickly find out which of your units is broken:

     

    Units normally get initialized in the same sequence in which they are entered in the *.dpr file. 

     

    So... my idea is to create a new empty "diagnostic" unit. Let it use only the "windows" unit and nothing else. For the rest, keep the interface section empty.

    In the implementation section of this unit, write an initialization that simply shows a "hello world" messagebox.

     

    This initialization will only execute if none of the units that initialized before it caused the program to terminate.

     

    So... Just start playing with the position of this unit in the USES clause of the DPR file. For starters, place it somewhere in the middle. Compile, and see if the messagebox appears. If yes, move the unit halfway further down in the USES clause. If not, move it halfway further up. See, we're doing a binary search here...

     

    Repeat this process until you have found the exact position where the messagebox no longer appears. It shouldn't take more than a dozen attempts.

     

    The offending unit will be the one right before the diagnostic unit. It's either that unit itself, or some unit which it depends on and which isn't in the uses clause.

     

    • Like 2

  4. Hello World,

     

    Can anyone please point me to some instructions on how to manually install the Android SDK in such a way that it'll work with Delphi Rio (in a VM)?

    I just can't understand how Embarcadero didn't have a contingency plan for keeping GetIt online. A two-weeks outage is soooooo unacceptable. 

     

     

    Regards,

    Arthur

     

     

     


  5. 6 hours ago, Sherlock said:

    @A.M. Hoornweg Well...your users have to cope with it, and you have want to give your users a product, that they can rely on. Win7 is practically dead, so your product has to offer best user experience on Win10 - like it or not.

    Like I said, I do test my apps on Windows 10 (using remote debugging, on a system with 3 monitors). But I do the compilation inside a Windows 7 VM, on a stable system that doesn't change all the time.


  6. It doesn't feel right for me to develop under an operating system that's constantly changing.  It happened 3 times to me in the past 12 months that a Windows update broke something serious on my Windows 10 system.  

     

    I feel much safer developing inside a Windows 7 x64 VM.  To test under Windows 10, I use remote debugging.

     

     


  7. 18 hours ago, Dany Marmur said:

    Just count the years 🙂 "Deleted" will be the VM as in "will not be maintained further".

    The IDE which you use to edit the project and the compiler which you use to build & deliver need not be the same... I use FinalBuilder for my builds so I can specify which compiler to use.  So I can edit in one Delphi version and build using another. 

     

    Often, if I migrate a project to a newer Delphi version, I want to avoid breaking things.  So I keep editing using the old IDE until it compiles without warnings in both compiler versions. This way the conversion can be a gradual process and I can still publish new releases and bugfixes if the conversion isn't ready yet.

     

    And sometimes it is useful to deliberately use an older compiler in the build process if it produces much smaller compiled code.  The difference between Delphi 2009 and Rio is quite dramatic.  Now I know that this doesn't make much sense in single-executable projects but it does have an impact if the project contains two dozen DLL's that suddenly triple in size.

     

    • Like 1

  8. 20 minutes ago, Dany Marmur said:

     

    I have "ended" up staying on:

     

    D2009 (migrated this spring - soon to be deleted!!!),

    If I were you I'd hang on to that D2009 version for a while, at least if the size of your executables and DLL's matters. D2009 produces much more compact executables/DLL's than all later versions.


  9. Use interfaces & tInterfacedObject.

     

    Put the interfaces like iVisitor, iDoor, iAutomobile etc in a common unit that contains no implementation code at all.  The implementations+class factories should be in entirely different units that don't reference each other at all. 

     

    Oh and instead of writing a big bunch of overloaded Visit() methods in a class, you could consider using a single method and use the "is" or the "supports" keyword if you really need to know the type of visitor.

     


  10. Hello all,

     

    I'm trying to port an older (Delphi XE) SOAP client application to Delphi Rio.  I'm stumbling upon a breaking change in THTTPReqResp, which is used by tHTTPRio.  The signature of the event THTTPReqResp.OnBeforePost has changed completely. 

     

    Formerly the signature was:

     

      TBeforePostEvent = procedure (CONST HTTPReqResp: THTTPReqResp; Data: Pointer);

     

    My routine does some manipulation of the http headers, for example it calls wininet.HTTPAddRequestHeaders(Data, ...) to allow gzip encoding and wininet.InternetSetOption(Data,....) to accept an invalid/self-signed SSL certificate.

     

     

    The new signature of the event has become:

     

      TBeforePostEvent = procedure(const HTTPReqResp: THTTPReqResp; Client: THTTPClient) of object;

     

    and now I'm stumped. How can I achieve the same as before? I want to accept gzip encoded data and I want to accept self signed SSL certificates.

     

    Kind regards,

    Arthur

     

     

×