Jump to content

A.M. Hoornweg

Members
  • Content Count

    490
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by A.M. Hoornweg

  1. A.M. Hoornweg

    Bug in Delphi string behavior?

    IMHO the compiler should throw an error if the same parameter is passed multiple times to the method and one of them is an OUT parameter.
  2. A.M. Hoornweg

    Bug in Delphi string behavior?

    Omitting the "const" changes nothing though. Delphi still passes it by reference even though it looks like a value parameter.
  3. A.M. Hoornweg

    Bug in Delphi string behavior?

    I suspect that it may do so. The "const" makes no difference. Using "VAR" instead of "OUT" also fixes the issue. I am quite alarmed by this issue because recently, whilst refactoring, I started replacing a lot of "VAR" parameters by "OUT" in order to make it more concise to a reader how the parameters are affected. But now it appears that "OUT" is dangerous if you pass the same parameter multiple times.
  4. A.M. Hoornweg

    can you reference unit name in code?

    Is the sequence of the units in the map file identical to the sequence in which the initialization sections are processed?
  5. 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
  6. A.M. Hoornweg

    THTTPReqResp.OnBeforePost breaking change

    Thank you, I'll try this!
  7. A.M. Hoornweg

    THTTPReqResp.OnBeforePost breaking change

    <bump> any news here? I still haven't got a clue how to achieve this in Delphi Rio.
  8. A.M. Hoornweg

    Patch a private virtual method

    What I meant specifically is, how do I find out the index of a method in the VMT?
  9. A.M. Hoornweg

    Patch a private virtual method

    That's very interesting, could you show a small example?
  10. Does this support copying to the clipboard? In Delphi XE it doesn't.
  11. A.M. Hoornweg

    Android in VMWare

    Has any of you tried using Bluestacks instead? It's an all-in-one Android emulator which emulates an ARM processor. I'm not using it for development but rather for running some Android apps that aren't available on Windows.
  12. Hello all, Are there any FB experts here? I could use a little help ... I need to enlarge the size of a Varchar primary key column in a small but populated Firebird table from 25 to 40 characters. Much to my surprise, that isn't trivial at all. There are no foreign keys in other tables pointing to this primary key so really, it should be straightforward, shouldn't it? The table name is "channels" and the primary key column is "paramname", it was originally declared as "varchar(25) character set iso8859_1 not null primary key". So far my trial steps were: (note that I did a commit after each statement) //1-Create a temporary column to hold the original data ALTER TABLE channels add temp_paramname VARCHAR(40) CHARACTER SET ISO8859_1 //2-Copy the data UPDATE channels set temp_paramname=paramname //3-Delete the old column ALTER TABLE channels DROP paramname // 4-Re-create column "paramname". The table has records, so I cannot declare it "not null" or "primary key" at this point ALTER TABLE channels add paramname VARCHAR(40) CHARACTER SET ISO8859_1 //5-Populate it with the original data UPDATE channels set paramname=temp_paramname //6-Now make it primary key - this step fails! alter table channels add primary key (paramname) //7-delete the temp column now... I'd be grateful for any help.
  13. A.M. Hoornweg

    Firebird, change length of Varchar Primary key column?

    Thanks a lot Remy, this works indeed! But I needed to perform a commit after each step, else it threw an error.
  14. A.M. Hoornweg

    Firebird, change length of Varchar Primary key column?

    Thanks Remy, I'll give it a try and keey you updated!
  15. A.M. Hoornweg

    Firebird, change length of Varchar Primary key column?

    Hi Dany, the error message said that FB couldn't create the primary key because the column wasn't declared as "not null". Which I couldn't do, because the new column contains nulls right after creation in step 4. I did the steps one by one in FlameRobin, but when everything works I must re-code it either in Delphi or in InnoSetup (because I have to distribute it as part of a software update).
  16. A.M. Hoornweg

    The Embarcadero GetIt server could not be reached...

    Downloading Android SDK through Getit seems to work now!
  17. Hello all, Delphi supports 64-bit development since XE2. But somehow it is still not possible to list and import 64-bit type libraries ???? Kind regards, Arthur
  18. A.M. Hoornweg

    64-bit type libraries still not supported by the IDE ?

    Hi David, I'm aware of these workarounds, thanks. But I'm also aware that a 32 bit process *can* actually see the 64 bit registry, see https://docs.microsoft.com/en-us/windows/win32/winprog64/accessing-an-alternate-registry-view . And if that weren't the case, the problem could also be solved by putting the tlb importer GUI in a separate process, to be compiled in two versions. It would just be really nice if this feature worked like it's supposed to.
  19. A.M. Hoornweg

    64-bit type libraries still not supported by the IDE ?

    The reason one pays for a subscription is for the product to be up to date. 64 bit support was hailed 7 years ago so I guess it's not unreasonable to expect it to work by now.
  20. A.M. Hoornweg

    64-bit type libraries still not supported by the IDE ?

    So? The IDE could spawn a 64 bit helper process to retrieve the info.
  21. A.M. Hoornweg

    The Embarcadero GetIt server could not be reached...

    Using Wireshark, I can observe how the Delphi IDE queries the DNS for "getit.embarcadero.com" as soon as Delphi tries to install the Android platform. This tells me that the IDE really uses Getit as the mechanism to retrieve the Android SDK. Anyway, the DNS server answers with the IP "204.216.225.162". Then Delphi initiates a TCP connection to that address on port 443. The connection is successful and a TLS connection is initiated. The server exists and is listening! A few seconds later, the error message "cannot load data from the server. Please, check your connection status" appears in Delphi. So... Even though Getit basically works, it seems that the Android SDK is AWOL on the server itself. I had installed Delphi from the ISO because I wanted to avoid dependencies on unreliable external sources. An ISO/DVD is supposed to have a self-contained installer with the correct versions of the dependencies, but the person who composed this ISO really didn't think things through well enough. You know, one reason for archiving an ISO is to be able to install the product exactly how it was at the time of the release. That isn't possible if external dependencies are missing or have changed in the mean time.
  22. A.M. Hoornweg

    The Embarcadero GetIt server could not be reached...

    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
  23. A.M. Hoornweg

    Bad build a mystery

    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...
  24. A.M. Hoornweg

    The Embarcadero GetIt server could not be reached...

    My Delphi 10.3.2 IDE is still unable to retrieve the Android SDK. It throws the error "Cannot load data from the server. Please check your connection status" when I try to build an Android app. Both with the original settings and the alternative ones.
  25. A.M. Hoornweg

    Bad build a mystery

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