Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


timfrost last won the day on February 24 2020

timfrost had the most liked content!

Community Reputation

47 Excellent

Technical Information

  • Delphi-Version
    Delphi 10.4 Sydney

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. timfrost

    Main screen tab error

    I copied one from 20.0 and changed Rio to Sydney and XE8 to XE9, which sort of works. But I hardly ever close a project or use this screen. It's either closing the IDE or simply opening another project, 99% of the time here.
  2. timfrost

    VCL Handling of dpi changes - poor performance

    After some of my VCL applications, I find the worst performer for repaints when dragging between different resolution screens is Regedit.
  3. timfrost

    community.embarcadero.com's forums

    It would take a lot of sorting out to make the content useful. When the server failed, I recall that the re-built server always had new message IDs so the threading failed and one had to start again with a full download in Xananews, with whatever content was still on the new server. So there are gaps and many duplications. Xananews has a folder for each newsgroup, with one file (messages.dat) containing all the raw NNTP messages and another (articles.dat) with all the threading data. In the messages folder each message starts with a long 'XMsg' header line so each message can be identified; and I think Xananews has the ability to rebuild the 'articles' file as well as maintain it. Xananews can also export messages into plain text files, each message with full NNTP headers and ending with a '.' (but this needs to be done manually for each newsgroup), or whole newsgroups can be compressed and exported, but you would need to study the Xananews Delphi source to unpack them. Xananews used group folders (named by the user) containing each set of folders with a common prefix. The groups I have vary in size from 46 folders of borland.public newsgroups, down to around 36 of embarcadero.public newsgroups. I have four group folders: the "borland" group is 636MB. The other three folders contain embarcadero.public newsgroups and are respectively 255MB, 427MB and 287MB. Looking in delphi.non-technical (the largest group by message volume) the four group folders run from: 2004.04.02 to 2008.08.07 borland 2008.01.02 to 2018.04.21 embarcadero 2008.08.09 to 2011.01.12 embarcadero 2008.08.09 to 2011.12.22 embarcadero In some of the borland newsgroups, content starts earlier or later than 2004. For example b.p.announce runs from 1997 to 2003. And where the top level groups overlap, they have different sets of newsgroup folders. In the newsgroup folders, where the texts match, the headers and message IDs are different. Some of the borland message.dat files have all-null-byte gaps where Xananews shows the article with missing text. If someone wants to take on this archaeology project, I can ZIP the files and upload them, but I do not have the time to do much more than this! If anyone has done this already, with better organized backups than mine, I have not heard of them.
  4. timfrost

    community.embarcadero.com's forums

    I still have the contents of Borland and Embarcadero newsgroups going back to around 2007, searchable in Xananews. But it is years since I have opened them or searched for anything.
  5. For me, this hardly ever worked in 8.4.1, and it was great, when I first installed 8.4.2, to find it reliable again. Now, it's gone; I will have to experiment removing stuff to see if I can get it back.
  6. It's an improvement on a Trie. The Dr Dobbs article (still on line at https://www.drdobbs.com/database/ternary-search-trees/184410528) claims in their Conclusion, "Ternary search trees are efficient and easy to implement. They offer substantial advantages over both binary search trees and digital search tries. We feel that they are superior to hashing in many applications.". See also:
  7. You still have not said what your use case is. My own need for fast string lookup (and finding either an integer or a pointer), is principally to load once, lookup many times, and I am not too concerned about memory usage or load time. The task usually is to handle up to a couple of hundred strings of about 25 to 200 characters. For this I have long used a ternary search tree, which I first learnt about from Dr Dobbs Journal, April 1998. I adapted the C version for Delphi 1, I think, and by now the lookup supports Unicode strings I cannot post useful timings, because you cannot compare my environment to yours, but I just did a test load of quarter of a million random 64-character strings into the tree in 390ms. The speed of lookup is what matters to me and this is too fast to bother to benchmark it. But those 250k strings (far more than I need in practice) took a tree size of 116MB. Whether this search method would be useful to you depends on how you value load speed and memory against lookup time. Lookup time may not the only thing you should be considering.
  8. timfrost

    50 Years of Pascal

    I am another UCSD Pascal user from about the same time, on my first microcomputer, a North Star Horizon (the model with the wooden case). I still have the CP/M and USCD Pascal disks, manuals, and 'User Manual and Report'; and the computer, but with no VDU to see if it still works. The first software tools I published were for various microcomputer-supported languages (including PL/1) before Lifeboat Associates persuaded me that C was the future. So I gave up Pascal and missed out on TP, only going back to writing in Pascal when Delphi 1 arrived
  9. In the Webinar yesterday, responding to a question about compiler updates/upgrades, I heard Marco say that 'Getit is a bit of a problem because it always uninstalls the old version before installing'. How can anyone defend this approach? What happens when you test the new version and something fails to work? Where is the old source code for you to compare the differences and either fix them or adjust your usage? A component installer should never force an install into the location of the production library; it should always be checked and validated before it is too late to do this.
  10. timfrost

    Visual Control for selecting a date range

    TMS VCL UI Pack has a 'calendar group' component that does exactly this, with three months to a view. I have used it and it works well.
  11. Very interesting topic! I also have been getting 10.4.1 IDE instability, and in 10.4 too. Not quite enough to stop work and try to track it down, but annoying. After reading the start of this topic I looked at my MMX version, and found it was 15.0.29, so I experimentally upgraded to 15.0.32 and the instability and hangs got much worse. I dropped back to 15.0.30 and no IDE problems yet. I run my IDE on a 4k screen at 200%, and dropping to 100% is not an option.
  12. For this sort of question I always used to go to www.efg2.com to find the answer, usually with success. It had code samples for all sorts of graphics and color algorithms. The site has gone now, but if you go to that URL, it has links to the Internet Archive where it can all still be found. A bit slower to navigate now, but perhaps worth a look.
  13. timfrost

    The Case of Delphi Const String Parameters

    We seem to be speaking here only about accidentally modifying the const string from inside the function. And Marco's blog did not mention the word 'thread'. But presumably another thread could cause the same address problem by modifying the string, and the problem would not arise if the function lacked the const and was therefore passed its own copy to read. Or am I overcomplicating this?
  14. timfrost

    madexcept inside a DLL

    I suggest you look instead at : http://help.madshi.net/madExceptDemo.htm
  15. timfrost

    IDGlobalProtocols GmtOffsetStrToDateTime

    If you need to handle time zones all around the world, for users and senders in different time zones, I recommend TZDB from https://github.com/pavkam/tzdb. It is essentially a single PAS file which has all the TZ and DST data and functions you need. There are also other tools, including one to update the source code from the IANA database, which is updated a few times a year. Of course you also need to follow the advice above about how to parse the input! As I have said here before, I suggest tweaking the database extraction tool to exclude all the historical data, which it seems unlikely you will need.