Jump to content

John Kouraklis

Members
  • Content Count

    332
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by John Kouraklis

  1. John Kouraklis

    Delphi 10.4.2 first impressions

    Quick Questions: 1. Why do we need the Migration Tool? This is a minor upgrade. If I don' use it, will the settings be lost? 2. Yesterday in the webinar, it was mentioned that the binaries should be compatible with 10.4.2. However, the binaries from 10.4.0 are not compatible with 10.4.1.
  2. John Kouraklis

    Why is TList freed in this code?

    Hi, I've got difficulties figuring out what is wrong with the following code: program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Generics.Collections; var dic: TObjectDictionary<string, TList<string>>; list: TList<string>; begin try dic:=TObjectDictionary<string, TList<string>>.Create([doOwnsValues]); list:=TList<string>.Create; list.Add('111'); dic.AddOrSetValue('aaa', list); var gg: integer:=dic.Items['aaa'].Count; writeln(gg); // 1 var l2: TList<string>:=dic.Items['aaa']; var a:integer:=l2.Count; writeln(a); // 1 l2.Add('222'); a:=l2.Count; writeln(a); // 2 dic.Items['aaa']:=l2; a:=l2.Count; writeln(a); // 0??? a:=dic.Items['aaa'].count; writeln(a); // 0??? dic.Free; // Invalid point? readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. When I assign the TList to the dictionary Value, it loses all the elements. What am I doing wrong here? Can't see what is going on. Thanks
  3. John Kouraklis

    Why is TList freed in this code?

    Oh, good to know it honors its name
  4. John Kouraklis

    Why is TList freed in this code?

    So, how does it behave? never used it
  5. John Kouraklis

    Why is TList freed in this code?

    So, the doOwnsValues frees the objects in assignments as well. I thought it only takes care of them when the dictionary is freed. Thanks a lot guys
  6. John Kouraklis

    FMX TWebBrowser Security Error

    I use TWebBrowser and trying to login to an email account. After the initial page, I get an error saying that "The browser or app may be insecure. Try using different browser". Does anyone know how to fix it? I read on the net that I can change the User Agent header to reflect a newer browser but couldn't find how to change the header in the component. Thanks
  7. John Kouraklis

    How to implement Push Notifications?

    Hi, I want to implement push notifications in a desktop app for GMail. I have read the dev guides and looked it up on the web and I all tutorials talk about how to do it in web apps. My email client on Android uses push notifications. Can anyone guide me on this? Or, any demo apps, perhaps? Thanks
  8. John Kouraklis

    ANN: Better Translation Manager released

    Yes, I was sure that other platforms wouldn't be easy to work with. Thanks for the tips.
  9. John Kouraklis

    ANN: Better Translation Manager released

    HI, Thanks a great app. Thanks for the contribution. I've got two questions: 1. Does the translation work in FMX apps? 2. Is there a way to load a resource file at run-time without the need to restart the translated app? Thanks
  10. Hi all, I'd like to share that my new book is almost out. Apress is working hard to put it in the market. We always discuss how we can bring new people to Delphi so I thought it would be a good idea to ease their way in by providing a quick up-to-date guide on the basics of the language. The book covers new features introduced in 10.4 Of course, a reference book is always useful to experienced coders as well; we all need a refresher every now and then 🙂 I would like to cordially thank Dr. Holger Flick for reviewing the chapters; his experienced view guided me during the writing of the book. Regards, John 9781484261118.tif
  11. John Kouraklis

    Are we just "Cash Cows"?

    In my view, the problem with Emba in relation to Delphi (and perhaps to C++ Builder) is not a problem of resourcing and funding. It is mainly a problem of mindset
  12. John Kouraklis

    Book: Delphi Quick Syntax Reference

    Apart from the additions in 10.3 and 10.4 I found very difficult to track down and verify this information and then to present everything in a concise way. And I am not sure a newcomer would really find this useful. Perhaps if you write components and need to cover old versions this would be useful but I feel this is a bit out of the scope of the book.
  13. John Kouraklis

    Book: Delphi Quick Syntax Reference

    I can't insert an image in the post now. So here's a link https://www.amazon.co.uk/Delphi-Quick-Syntax-Reference-Language/dp/1484261119
  14. John Kouraklis

    Client Library for FusionAuth?

    Hi, I am going to use FusionAuth for authentication. Quick Question: before I write my own client, does anyone have a library and happy to share? Thanks
  15. John Kouraklis

    Client Library for FusionAuth?

    Hi @Dan Moore, I ended up writing my own. It does not provide full cover of the API; I only added the calls I needed. I can share it with the community but need to clear it up a bit as at the moment it uses some proprietary code. I only used it for simplicity but it can be replaces with open source. Thanks John
  16. John Kouraklis

    Drag and Drop Component Suite for Delphi 10.4 Sydney

    Interesting...I am going to have a look at it. Sadly it does not support FMX apps
  17. John Kouraklis

    Hints and ShowHint

    @Anders Melander Are you sure ShowHint is inherited from the parent control? Shouldn't it respect the HitTest property?
  18. John Kouraklis

    Your RAD Studio 10.4 Sydney issues

    Yesterday, I got a new one: "The LSP is not running...Attempting to launch it again" or something like this. LSP never came back. I had to restart the IDE
  19. John Kouraklis

    Your RAD Studio 10.4 Sydney issues

    LSP form works...when it works What annoys me is that you first need to save a file before LSP is able to locate the changes--and this may not be what you always want. In all the videos EMBA presented and demonstrated LSP, they used units from the libraries. They never played live in the sense to add variables or procedures and then fire up LSP. In other versions I had CodeInsightPlus by DevJet which is an amazing product. Maybe they should have considered to buy it.
  20. Check this code: var forControl: Integer; forArrayDyn: array of Integer; begin SetLength(forArrayDyn, 10); for forControl := 1 to 10 do forArrayDyn[forControl - 1]:=forControl; for forControl := 0 to Length(forArrayDyn)-1 do begin SetLength(forArrayDyn, 3); Writeln(forArrayDyn[forControl]); end; end. In the second for loop, the size of the forArrayDyn changes from 10 to 3 and yet the for loop is able to access the elements above index 2. Given that for loops evaluate the initial and final values only once at the beginning of the loop, shouldn't this generate an AV? I understand that in memory there are still elements in positions where index >=3 but shouldn't the code break? The set length does affect the array because when I set a breakpoint I can see the change. Thanks!
  21. Hi, I am looking at some older code and I see the author uses the following statement: for i:=0 to Pred(WhateverList.count) do instead of the usual one: for i:=0 to WhateverList.count - 1 do Does it make any real difference or it's just a personal preference? Thanks
  22. John Kouraklis

    IDE Fix Pack 6.5 dev-snapshot 2020-05-17

    @jbg Thanks for the amazing work (as always) May I ask if you can add something in the compilation windows? I think having the Platform and the output directory would be very useful
  23. John Kouraklis

    Difference between Pred and -1

    @Mike Torrettinni Hahaha...yes...my bad 😋
  24. John Kouraklis

    Difference between Pred and -1

    I also use for..in all the time. Don't forget though that in for loops you can not modify the iteration variable. So, if you have a TStringList, this code does not compile: for item in list do item:=item + '123'; In such cases, iterating through the items via index is the only option for num := 0 to list.Count - 1 do list[num]:=list[num] + '123';
  25. John Kouraklis

    Why does this code work when it shouldn't?

    I see. thanks
×