Jump to content

Virgo

Members
  • Content Count

    86
  • Joined

  • Last visited

Posts posted by Virgo


  1. 12 hours ago, David Heffernan said:

    You don't need to be a C programmer to translate this. You just need to understand the basics of curl. Do you have a Delphi curl library to hand?

    You do not need event that. The code is completely obvious even without knowing curl. http request is sent with three additional headers set: accept, content-type and Authorization. And json is the request body. without seeing problem Delphi code, it is hard to know, what is done wrong in Delphi.


  2. 10 hours ago, obmsch said:
    • To install the Microsoft ACE OLEDB Provider 32-bit on a machine running Office 64-bit:   AccessDatabaseEngine.exe /passive

    I need to remember this.

    We ever needed to only read from excel and whole sheet at the time. So we created extra 64 bit executable, that communicates with main executable via named pipe and reads sheet to json and sends it back. Where it is loaded to in-memory dataset. It is used as a fallback, when just reading table with ADO fails with 'Provider cannot be found' error. And when that also fails, then and error is shown.


  3. 10 minutes ago, Dalija Prasnikar said:

     

    This code is not 100% correct, though. If constructor fails, Free will be called on an uninitialized reference. In order for it to work properly, IdHTTP should be initialized to nil before calling constructor. 

    No.... If constructor fails, then Free is never called.... Create is not inside try except block...

    • Like 1

  4. Just now, limelect said:

    Thank but that is not MY QUESTION

    Then what is the question?

    In your original sample neither version leaks memory, because except block eats exception and free is called anyway.

     

    if you put exit somewhere before IdHTTP.Free, then both versions initially leak memory, but in .Create(Form1) version it will be finally freed, when form is freed. But it is still type of memory leak, because every time code is executed it creates new object, but it is only freed, when form is freed. So memory usage will continue go up on every execution of GetUpDate until Form1 is freed.


  5. 51 minutes ago, limelect said:

    @haentschman I thought that too but i double checked

    It does free http at list on the single step

    Did you actually test with identical except block? Because without try finally IdHTTP is not freed, if function is exited before free line. That is why using try finally is strongly recommended.

     


  6. 3 hours ago, Angus Robertson said:

    If by SFTP you mean secure FTP rather than Simple FTP (a UDP protocol), ICS has a sample OverbyteIcsSslMultiFtpServ.dpr which is really designed to be a Windows service application. It supports multiple SSL hosts

    sftp means usually ssh builtin file transsefer server. Ftp over TLS/SSL is ftps.  I actually had not heard about simple ftp.

    • Like 1

  7. 5 hours ago, Anders Melander said:

    How can you tell? I'm impressed if you managed to make any sense of it 🙂

    It's not, that I made sense of it... I just did not notice any other strings mentioning progress... Although I missed that Form7 part....


  8. On 1/10/2022 at 7:04 PM, Serge_G said:

    I don't agree you can use ADO driver, even if I agree with your second remark 

     

    Expect.... That requires BDE for some Paradox features anyway. From what I recall Paradox version 7 tables were one of those things.


  9. 7 minutes ago, Serge_G said:

    You spoke about Database Desktop not Delphi 7, I am confused 😲

    D7 works on Windows 10, I install/uninstall it about once a month

    This is the message Windows 10 shows, when launching dbd32.exe of Database Desktop. Even for Delphi 5 version of Database Desktop. I have no idea, why it is about Delphi 7. But in the end Database Desktop will close without showing main window.


  10. No, I meant:

    image.thumb.png.22f7b1d188acc9d6056f382673fb6c8f.png

    When clicking "Run the program..." nothing happens. Those directory messages are nothing Windows 10 specific and those where set long time ago, when it still Worked on Windows 10.

    Just for testing I removed that configuration from registry. Then it shows the splash, shows those messages about using temporary directory and then closes.


  11. 9 hours ago, audi30tdi said:

    But have a one last question, I hope, is it possible to get the Database Desktop to work on win10 also?? I can't get it to start.............

     

    Not that I know of. It was one of big updates, that broke it. For our internal use we made our own replacement with functionality, that we required...


  12. 49 minutes ago, Lars Fosdal said:

    Just my two cents:

    The migration to FireDAC is very much worth it, just to avoid all the BDE pitfalls.

    Absolutely. What I meant was, that BDE version should be able to work while FireDAC version is written.

    We have not even set configuration file location to user writable location, because all required changes to BDE configuration is done via elevated BDE configuration utility.


  13. Since that rewriting is going to take some time, what are actual issues? What does having trouble mean?

    BDE using program written in Delphi 5 works on Windows 10 and Windows 11. Only actual issue is, that sometimes SHAREDMEMLOCATION needs to be changed in BDE configuration after computer restart. Otherwise it works sames as Windows 7.


  14. You could also check server version on connect and execute

    SET BIND OF TIMESTAMP WITH TIME ZONE TO LEGACY;

    SET BIND OF TIME WITH TIME ZONE TO LEGACY;

    SET BIND OF DECFLOAT TO LEGACY;

    SET BIND OF NUMERIC(38) TO LEGACY;

    That way program works with FirebirdSQL 4.0 without changing server config. Of cause you must not use new unsupported data types in that database. But that solves problems with automatic type conversions and use of new types in system tables.

    • Like 2

  15. 3 minutes ago, Rollo62 said:

    Because as far as I understand TPM is a kind like a separate hardware 2FA for the PC, which is maybe good for the people who needs this level of safety (officials, companies, etc.). 

    Except in case of most newer PC's, that do not have separate TPM chip and instead implement TPM in firmware.  And where firmware update may reset TPM.


  16. What happens, when this Add is called with nil as CalcRes?

    Typically in C style API's function then assigns required string length without copying string. So that caller would know, how much memory to allocate.

     

    Never mind. I did not read correctly original code, this is already handled.  But what are requirements on function result?

     

    Also possible issues with ending #0 - is it required in CalcRes?

     

     


  17. Try:

     

    SELECT X.*, Case When CAST(X.BALANCE  AS NUMERIC(15, 2) > 0 then 'Debit' else 'Credit' as STATE

    FROM

    (

    SELECT  C.CUSTNO, C.CUSTNAME, SUM (CM.DEBIT-CM.CREDIT)BALANCE

    FROM CUSTMOVEMENTS CM /* it is a View */
    LEFT JOIN CUSTOMER C ON CM.CUSTNO=C.CUSTNO
    WHERE  CM.TDATE <= '03/30/2021'
    GROUP BY C.CUSTNO, C.CUSTNAME
    HAVING SUM (CM.DEBIT-CM.CREDIT) <> 0

    ) X

     


  18. Warning: [   41] Failed to resolve symbol to module: [0005:00000008] SysInit.TlsLast

    But otherwise ok.

     

    But Delphi 5 is weird and probably hopeless...

     Start         Length     Name                   Class
     0001:00000000 00002B14H .text                   CODE
     0002:00000000 000000BCH .data                   DATA
     0002:000000BC 000004D1H .bss                    BSS

     


  19. Now, that I'm checking: is 0 length .xdata ovelapping .tls?

     

    Start         Length     Name                   Class
     0001:00401000 00003B90H .text                   CODE
     0002:00405000 00000100H .itext                  ICODE
     0003:00406000 000007BCH .data                   DATA
     0004:00407000 00002B74H .bss                    BSS
     0005:00000000 00000008H .tls                    TLS
     000A:00000000 00000000H .xdata                  PDATA


    Detailed map of segments

     0001:00000000 000036F4 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
     0001:000036F4 00000110 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
     0001:00003804 0000038C C=CODE     S=.text    G=(none)   M=test     ACBP=A9
     0002:00000000 000000AC C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
     0002:000000AC 00000054 C=ICODE    S=.itext   G=(none)   M=test     ACBP=A9
     0003:00000000 00000794 C=DATA     S=.data    G=DGROUP   M=System   ACBP=A9
     0003:00000794 00000024 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
     0004:00000000 00002B68 C=BSS      S=.bss     G=DGROUP   M=System   ACBP=A9
     0004:00002B68 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
     0005:00000000 00000008 C=TLS      S=.tls     G=(none)   M=System   ACBP=A9

     

×