Jump to content

Wagner Landgraf

Members
  • Content Count

    130
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Wagner Landgraf


  1. 8 hours ago, Edwin Yip said:

    Maybe price? 😉

    That's a significant factor, yes. But since I have already bought it, and actually when a tool saves your time and/or allows you to more easily improve the quality of your code, it pays for itself. So I was mostly talking about technical differences. 


  2. On 4/6/2021 at 5:53 AM, Attila Kovacs said:

    I've seen in procmon that something happens but slow af and had nothing to do with the pdb. I'm still waiting for the confirmation email for the intel tech forum where google found some similar posts.

    Are you referring to the slowness of the "Resolving information" step? Any news about this?

    I have the same problem, it's taking more than 30 minutes and still going on...


  3. 17 hours ago, Stefan Glienke said:

    I know this from refactoring spring4d where I redesigned the generic collections to produce as little code as possible and turned off RTTI for all the implementing classes which improvided compile time on some projects by a factor of 4.

    Are you aware of any compilation of best practices to reduce code bloat and compilation size you are mentioning here ref your refactoring?


  4. 18 hours ago, c0d3r said:

    I can confirm all as well, went back to Classic,  don't see why I should use LSP.

    LSP is now way better than the previous one. And it looks like Embarcadero is just not touching the old one anymore, so for example I see IDE crashes in some situations with the Classic code insight, and I'm afraid that will never be fixed now.

     

    Installing MMX "solves" the issue temporarily, until they hopefully fixes that in 10.5.

    • Like 1

  5. 5 minutes ago, Uwe Raabe said:

    I followed your steps and the cursor is on line 27, while the editor top line is 25. 

     

    Embarcadero® Delphi 10.4 Version 27.0.40680.4203 (with MMX Code Explorer , Project Magician, Selective Debugging and wuppdi Welcome Page)

    Using same exact version: Embarcadero® RAD Studio 10.4 Version 27.0.40680.4203.

    No IDE plugins installed, only components.

    The fact you can't reproduce is really intriguing, it might mean there is some settings that "fix" this behavior? Or maybe your IDE plugins are affecting it?


  6. Weird. How did you test it? Using latest Delphi 10.4.2 Sydney, you can do just this:

     

    1. Create a new VCL blank application

     

    2. Double click the form to create a FormCreate event handler.

    Cursor is located between begin..end lines (line 27)

     

    3. Press Ctrl+Shift+Up.

    Cursor goes to FormCreate declaration in interface section (line 11)

     

    4. Press Ctrl+Shift+Down.

    Cursor goes back to FormCreate implementation, but now cursor is in procedure line (line 25), not between begin..end lines

     

    You don't see that behavior?


  7. I wonder if someone notice these "minor" but really annoying changes in IDE behavior in 10.4.2. This really decreases productivity significantly when you sum up the small things.

     

     

    1. Interface/implementation navigation 

    a) When you navigate from method declaration in interface to method implementation, using Ctrl+Shift+Arrow Down, the IDE goes to the implementation, but cursor is now located in the procedure/function declaration, not in the first line of the implementation (after begin). 

    Thus, if you want to start coding, you have to press down key several times (especially if you have lots of local variables declared) just to get to the first line of code.

     

    b) Also when navigating to implementation, the cursor is now located in the middle of the editor, instead of top. Thus, you only see "half" of the implementation code that would you see if the cursor is located in the top of editor.

     

    2. Forward class declaration navigation

    When you control-click a forward class declaration like

     

      TMappingExplorer = class;

     

    It won't navigate anymore to the actual class declaration.

     

    I wonder if you noticed the same and you know workarounds. The only one I found was to disable new LSP but this brings lots of stability issues, besides not having the new LSP features, obviously.


  8. On 2/27/2021 at 3:39 AM, Stéphane Wierzbicki said:

    Thanks for your reply. Object's lifetime cycle is actually handle by Aurelius' manager. Object's stored within TList are only queried for additional checks, needs to see TList acting like a cache. 

     

    I'll then use .ToArray and then free TList.

     

    Ps: @Wagner Landgraf it will be nice allowing TMS Biz products using Spring4D library 😄

     

     

    That's for sure. We could even use more things and types from Spring4D.

    The main problem, actually - besides some time to integrate - is the deploy of it. Installation is already complex, it's rather complex to add Spring4D as a dependency, worse, as an optional dependency. That's why I'm really looking forward to @Vincent Parrett's DPM, when it's ready, we could deploy several different packages, and it will just download and install whatever dependencies it needs.

    • Like 3

  9. In the case of TMS Aurelius Nullable type, specifically, there are helper methods for you to use that do the job for you. It's TMappingExplorer.GetMemberValue and SetMemberValue. Here is some info:

    https://support.tmssoftware.com/t/how-to-get-a-property-by-its-name/7777/2

     

    But in general, you do what @Attila Kovacs mentioned: get the whole record, modify its fields via RTTI, and then set the record back to the field/property. That's what Aurelius does.


  10. 3 hours ago, Edwin Yip said:

    Yes, those are really good Delphi guys 😉

    It's their endeavor, but not Delphi's ever-increasing licensing fees, that drives the prosperity of the Delphi community 😉

    Excellent! I'm always pleased with people that see the positive side of things.

    • Like 1

  11. 1 minute ago, Arnaud Bouchez said:

    This is not TMS DB Remote for sure.

    But a request like GET /tms/xdata/Customer?$filter=Country/Name eq 'USA'&$orderby=Name&$top=10 seems very close to a SQL SELECT.

     

    Security seems pretty basic: is there something more than the CRUD permissions of https://download.tmssoftware.com/business/xdata/doc/web/entity_sets_permissions.html ?

    Even if the client is authenticated, how to you go deeper into the authorization? For instance, if you have a DB with all customers for all salers, how to prevent one saler to get the customers of other salers from the same table?

     

    What I would like to emphase is that it may be a 3-tier physical architecture, but it is still a 2-tier logical Architecture. The logic is still in the client.
    A much cleaner n-Tier architecture would be to create a real business layer (logical 3-tier) - or even better an application layer (logicial 4-tier as in DDD), and expose only safe and efficient REST endpoints to the clients.
    The client side is still much too tied to the underlying database. In a clean SOA architecture, you don't start from the database, but from the client use-cases.

    I will not get into an architectural discussion or in a feature discussion, it's out of the scope of the topic.

    It's a tool that anyone can use if they want. It's not SQL SELECT, there is no injection, it's more secure. Yes, you can do complex authorization mechanisms.

    Finally, that is not "XData", but one of XData tools. If user wants, he can simply choose not to use it, and do a 15-tiered application without any client-side logic. 

    I'm just answering the OP question.

    • Thanks 1

  12. Hi, is there anyone here using Delphi with Mac using Parallels virtual machines?

     

    I've recently migrated from VMWare to Parallels - and very happy for it, it's noticeable faster.

     

    However, I'm having a small but annoying issue that didn't happen in VMWare: whenever I try to scroll the source code using the mouse scroll (trackpad, in this case), it goes too fast. 

     

    It's interesting to note that when scrolling up, it works fine. When scrolling down, it goes too fast. That only happens in this virtual machine, only with Parallels, and only with Delphi - no other Windows applications behave like that.

     

    I have also know another person who uses it like that, and he has the exactly same problem. From some Parallels forum posts, it looks like it happens to other as well.

     

    Thus, I believe this happens to everyone using Delphi with Parallels, and I believe given the number of Delphi users here, some DelphiPraxis forum members might also be in the same situation.

     

    So I wonder, does it happen to you as well? If yes, have you found a workaround, or have you just accepted it as a fact of life?

     

    Some references:

    https://forum.parallels.com/threads/smooth-scrolling.346361/

    https://forum.parallels.com/threads/trackpad-scrolling-is-too-fast-and-frequently-uncontrollable.346338/page-2

    https://stackoverflow.com/questions/59163058/how-to-make-delphis-ide-scroll-correctly

     

     


  13. TMS XData does that. These three videos show it in details:

     

    https://www.youtube.com/watch?v=AZs9e2DNXdI

    https://www.youtube.com/watch?v=e31Co9Fv3YY

    https://www.youtube.com/watch?v=QvgS8pjpfkk

     

    This has nothing to do with executing arbitrary SQL statements. It's regular REST endpoints.

     

    Regarding being 1:1 with underlying db system, in my opinion it depends. As someone mentioned here, you might need an "inner" use in which this is not a problem. Or, you might use it for simple entities like a list of countries or something like that. So for example use it for simple or non-critical entities, and then implement DTOs and specific business logic for more complex or critical business operations.

     

    Like anything, it's just a nice tool which is available. Use if it's helpful for you.

    • Thanks 1

  14. Ok. Reading the code I think TI is just not prepared for it. In many places you consider the test name to be ClassName + TestName, as in:

     

    function GetFullQualifiedName(const test: ITest): string;
    begin
      Result := (test as TObject).ClassName + '.' + test.Name;
    end;

    Also, TTestInsightListener.StartSuite and EndSuite are not implemented, and I believe that's what would allow a tree-like structure in the IDE plugin. 

    I also don't know how the plugin handles the information sent to it, but from what is available in TTestInsightResult and no StartSuite/EndSuite information I believe it's not trivial to show the results reflecting the original tree structure.

     

    Thanks for your help!

×