timfrost
Members-
Content Count
203 -
Joined
-
Last visited
-
Days Won
3
Everything posted by timfrost
-
Code causes Bitdefender Advanced Threat Control see the app as malicious (SingleInstanceAppl)
timfrost replied to mvanrijnen's topic in Algorithms, Data Structures and Class Design
So that means it's only one AV vendor that your company uses and that you have to contact? You mentioned 'scanners'. -
Code causes Bitdefender Advanced Threat Control see the app as malicious (SingleInstanceAppl)
timfrost replied to mvanrijnen's topic in Algorithms, Data Structures and Class Design
Trying to change source code to avoid this is a waste of your time. Any change or no change could make it go away tomorrow. Upload to VirusTotal, list those that catch it, and if it is important to you, see if the vendors will fix the false positives. And then it may be reported again when you next make a change and rebuild. -
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.
-
After some of my VCL applications, I find the worst performer for repaints when dragging between different resolution screens is Regedit.
-
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.
-
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.
-
Delphi 10.4.2 Right Click over a word -> Find Declaration, Not working.
timfrost replied to Juan C.Cilleruelo's topic in Delphi IDE and APIs
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.- 45 replies
-
- 10.4.2
- find declaration
-
(and 1 more)
Tagged with:
-
Fast lookup tables - TArray.BinarySearch vs Dictionary vs binary search
timfrost replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
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: -
Fast lookup tables - TArray.BinarySearch vs Dictionary vs binary search
timfrost replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
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. -
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
-
Blogged : Advice for Delphi library authors
timfrost replied to Vincent Parrett's topic in Tips / Blogs / Tutorials / Videos
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. -
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.
-
IDE hangs for a few seconds every couple of minutes
timfrost replied to RaelB's topic in MMX Code Explorer
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. -
Compute nearest color
timfrost replied to FPiette's topic in Algorithms, Data Structures and Class Design
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. -
The Case of Delphi Const String Parameters
timfrost replied to Mike Torrettinni's topic in RTL and Delphi Object Pascal
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? -
I suggest you look instead at : http://help.madshi.net/madExceptDemo.htm
-
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.
-
You can call FastMM_ApplyLegacyConditionalDefines if you already have defines in your code to control logging; it will then use them. But there is new, finer, control of the logging for FastMM5 and you can select FastMM_LogToFileEvents as you wish. The extensive documentation in the source describes all this, and there are basic instructions about logging options at https://github.com/pleriche/FastMM5. Someone (but perhaps not from the USA during this holiday season) will no doubt be along help with a more comprehensive answer; I mainly make do with the defaults.
-
TIDSmptServer does not receive mail from certain client [Fixed]
timfrost replied to mvanrijnen's topic in Indy
Your logs only show what is coming in, not what is going out, but my guess is that the Indy server rejected the BDAT command (binary data) as invalid. I have never seen one before in the wild, and I see that the RFC1830 that introduced this command in August 1995 marks it as 'experimental'. -
I have only seen a link to a zip with the EXE/CFG files. If I had known where to find the source I might have worked out what compressed=0 does!
-
It would be much more logical to have an option in UsesCleaner which makes it follow the settings in GExperts formatter. I want to define my formatting preferences in the formatter, which seems to me to be the right way to do it. Why should I have to reformat every unit with my chosen formatter settings (without any option set to match another application, of course) in order to fix the unwanted format changes that the UsersCleaner has made? If I could find the UsesCleaner site and a place for feature requests, I would add one: please add an option to never change unit sequence and never add or delete newlines in the uses section and always retain comments. This would then cover a preference in any formatter to have one unit per line.
-
I use TMS TadvStringGrid when I need to do this, but it is not free and not available on its own. It can build the combobox with an entry for every different value in the column, or you can override it to create entries manually such as 1-20. 21-40, >40, and filter them yourself. It puts an icon in the header row which you click on to filter. I am sure that there are other grids available from other vendors with this capability, but I happen to use TMS
-
Remove non-utf8 characters from a utf8 string
timfrost replied to borni69's topic in Algorithms, Data Structures and Class Design
Despite the name of this topic I cannot remember seeing any of your code which actually references a UTFstring. If you want an answer to the original question, the 'lazy programmer' solution (and so occasionally mine) is to pass the UTF8 text to the Windows API MultiByteToWideString function with source code 65001 (UTF8). With the normal options, any invalid UTF8 sequences should be returned as Ufffd in the returned Unicode string, and you can walk the result and drop them. This is not the 'proper' way to approach the problem, but it should work. -
Sent; it is my broken project file which causes it to crash!
- 13 replies
-
- project magician
- line breaks
-
(and 1 more)
Tagged with:
-
Does Project Magician support 10.4.1 project files? Or alternatively, is the command-line program supposed to work if I select none of the IDE options? If the answer to both of these is 'yes' I will report a null-pointer exception when running the command-line version to try it.
- 13 replies
-
- project magician
- line breaks
-
(and 1 more)
Tagged with: