Jump to content

Dany Marmur

  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by Dany Marmur

  1. I have now upgraded to Win 11. The "rounded corners" is so much more than just rounded corners. It is a lot more than just a look. Skinning in itself will not achieve a proper implementation, at least not in VCL. Applying workarounds will create a havoc similar to High DPI, IMHO. To start with we need the VCL to handle the NC areas properly, Windows App SDK is not just a look. Then moving on to controls and looks within apps, here, skinning might help. But now i am speculating. Without this the VCL will not survive when Win11 comes to offices, IMHO, this is also speculation, but commercial.




    Oh, hover over the common restore/maximize button if you have Win 11!

  2. There are but a very few things i have not been able to tweak/add/implement using DevExpress. 15 years back i had some patching requirements but since a rewrite 4 years back, none, "just" inheritance. I have not used the spreadsheet much, but it would surprise me if your goal could not be achieved - are you stuck in an older DX version?

  3. select [expression]

    from rdb$database


    Is not an antipattern IMHO, let's say you just need one of those session/attachment variables.

    (rdb$database is the dummytabe of the database for FB.)

    Agreed, that if the result is the same in OP/C#/Clientside/anything it's wasteful.


    Neat, esp. before the admin tools could do proper trigger/sp debugging.

  4. 4 hours ago, mvanrijnen said:

    Would the query component know what type after a .Prepare statement ?

    IBO does, the parsing code is almost on par with the server(s) themselves. CTEs, subselects, singletons, windowing, BLR, returning handling, SUID, parameter types, it knows most of all that stuff, some of it even before preparing (can be a huge performance boon not to have to query the server for everything). FireDAC really really should (no sources, so dunno).

  5. 3 hours ago, Lajos Juhász said:

    In case of the FireDAC there is already OpenOrExecute. 

    I don't know shit about FireDAC.

    But i am intimately knowledgeable about how this problem should be solved and i am SURE FireDAC can provide (as any full-blown DAC - Data Access Component - should).

    The statement above is key.

    Any serious DAC have loads of SQL parsing code in order to "pre-empt" the RDBMS API calls.

    Use it instead of trying to create your own, that code is tested in a way a single "deveoper" cannot do.


    And, as a last recommendation, never ever use DAC libs (or any other) without sources. If you do, all the fancy stuff will be hidden and you will re-invent lots of wheels.

  6. 13 minutes ago, mvanrijnen said:

    EWS was that old

    Can't say when i first saw it. 2002 was the first very very specific implementation with OL app server side (sic).


    13 minutes ago, mvanrijnen said:

    just imported the tlb into Delphi and it works

    Ah, of course! The interface "we" write is so much simpler (or "to the point") compared to trying to import the whole EWS. Brilliant! Thank you, this was useful to me!


    13 minutes ago, mvanrijnen said:

    It looks utterly incomplete compared to EWS. My two clients (soon to be only one, hoooray) with this implemented want my system to export "distribution lists" to Exchange and keep them up to date. I cannot see (when i looked some ½ year ago) that possibility in MSGraph. Back when, the lists were a Outlook application function, it was stored binary in Exchange. So the first serious server side implementation was a lot of fiddling with the distlist binary format that was almost "undocumented". Then these function came to EWS, that is when i deployed it using AToZed. I cannot remember when i found out and reworked the deployment.


    @PiedSoftware, sorry for hogging you thread.

  7. I am definitely like you. But first pen and paper! I start something, a unit, a class, whatever, get a bit fed up with the compile-run-test cycle, more so with GUI projects, create a test project and include the (now new unit) if i feel i will save time, some scaffolding will always be needed. Then when the structure and stuff starts to look like something, i go back to the "real life project" and finish up. This can go a couple of turns depending on the complexity of the specific thingies. My debug output often is a unit "global" procedure taking a string or two that i can assign the same way easily, regardless of other scaffolding. These test projects is nothing i save or reuse months later because the actual unit will have changed. If i did that it would be something TDD-like.


    Your colleagues approach make me nauseous. What with edge cases of arrays, range and overflow exceptions et. al. I would feel my code will have [untested] "holes" in it. Sometimes i even break out very simple stuff like SubStr(, , Pos() - 1) just to be sure it is full-proof.

    • Like 1

  8. For example, i just removed a set of an enum. I suppose it's not uncommon to do something like:

    TMyType = ( mtA, mtB, mtC );
    TMyTypes = set of TMyType;

    Before removing the TMyTypes declaration, i quickly search "project group" to make sure* it is not used.

    Then i put the cursor on TMyType in order to go down to the first occurrence in the unit, but the MRU handling puts "TMyTypes" there instead.

    So i go... what?! That cant be right. I open VC and use the search there and of course there are matches.

    It is ultimately a problem of eye-sight, this was not a problem for me when i had vision or when the screens were XVGA (or some such, don't remember).


    Is there a QP ticket already? Apologies, but i do not feel at home searching there (unrelated issue). I would vote to have a Ctrl+F press take the text under the cursor verbatim. Or perhaps some plugin of some kind? I'm on 10.4.2.


    * I have low trust for the IDEs search capabilities. I often switch to VC to do better searches. And in this case there will be a compile error.

  9. While absolutely agreeing with both Davids above, i can say something about two alternatives;


    1. Ararat Synapse. http://www.ararat.cz/synapse/doku.php/download F/OS. I have used it for different needs. What i like about this library is the source code. It is written in a very "intuitive" way in that you can easily follow what happens for example when switching to TLS. Thus it is easy to trace along and see exactly what request/answer (SMTP/POP are good examples) that fails. IMHO looking at the code is much easier than reading the RFCs.


    2. /n software, IP Works. Rather/very expensive. If you use their Mail component, i would be surprised if such a problem even appear and if it does if they do not solve it pronto.





  10. 2 hours ago, mvanrijnen said:

    Here the same, only for O365 i have build a "proxy" in C#, we use EWS for that now

    Interesting! I went exactly that way. It must have been 2002 that we had "Outlook App" on the server w OLE. Of course that did not work. Then i tried importing the EWS shemas directly into Delphi, i even evaluated RemObjects to no avail. Then dowloaded the SDK and VS Community and made a dll for Delphi. Works like a charm! I use AToZed CrossTalk. Did you fix integration some other way? EWS is old but very complete.

  11. What are you on about "storing dates as strings"?

    OP said clearly it is a DateTime field in the Database.

    This is getting super-confused.

    The original "problem" was about selecting records from a table.

    The conversion from any type of [date]presentation should be answered as pertaining to the parameters of that query.

    The OP never asked about storing the records to be queried, that was patted down as i read it.

    I feel like a StackOverflow member now :classic_sad:

  12. I do not work with the same RDBMS, but, to confuse this thread even more...

    It is probably not noticeable but running the test value through a function will execute the function lots of times (if you do not have an expression index).

    The alternate, to test the timestamp in a BETWEEN or in or:ed >= and < , as above, would probably be more efficient (but that needs to be measured), look at the plan and the count result of table accesses.