

timfrost
Members-
Content Count
212 -
Joined
-
Last visited
-
Days Won
3
Everything posted by timfrost
-
New PDF editing toolbar, high quality PDF printing and support for eight extra languages in ImageEn 10.2.0
timfrost replied to Xequte's topic in Delphi Third-Party
But anything based on PDFIUM has the limitation of single threading only. Which may not matter if you have a user interactively tweaking annotations and images, but it does to the applications I deal with.- 11 replies
-
There is also the excellent PDFIUM DLL wrapper from Winsoft: https://www.winsoft.sk/pdfium.htm. You would not need to ship the PDFIUM DLL with every update of your software, though it does get updated from time to time. The viewer demo builds to 2.9MB, but the demo is a full viewer with scaling, rotation, printing, rendering etc.
-
Have you ever encountered - EXE name's changed by the user's system and also caused DLL loading error?
timfrost replied to Edwin Yip's topic in General Help
In a MadExcept bugreport there is nothing to stop you adding customer identification or licence details in the headings. No need for the customer to manually fill in anything. There are examples in the MadExcept documentation on how to do this in your application which generates the report. -
Image32 - 2D graphics library (open source freeware)
timfrost replied to angusj's topic in I made this
And mine too. North Star Horizon in a wooden case. I still have it.- 42 replies
-
- graphics
- cross-platform
-
(and 2 more)
Tagged with:
-
Image32 - 2D graphics library (open source freeware)
timfrost replied to angusj's topic in I made this
I liked the Vectorize demo, but it seems that saving the monochrome image to SVG is not finished yet. Or did I miss something?- 42 replies
-
- graphics
- cross-platform
-
(and 2 more)
Tagged with:
-
For loop does NOT go to the max
timfrost replied to Joe Sansalone's topic in Algorithms, Data Structures and Class Design
"For purposes of controlling the execution of the loop, the expressions initialValue and finalValue are evaluated only once, before the loop begins." You can use a 'while' statement to force the evaluation of the final value on every iteration. i := 0 while i < list.count do -
However "funny" your user's country plays with daylight savings, the settings should be promptly reflected in the IANA database, which you can incorporate using the functions at https://github.com/pavkam/tzdb. If you are prepared to monitor updates (every few months) and recompile your application with the latest include file (many changes are historical only), then it is simple to convert UTC to a local timezone, including DST when applicable, which can be displayed accurately for users wherever they are in the world.
-
Out parameter is read before set
timfrost replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Gimpel Software and PC Lint seem to be still around, and I still have a copy, though a version too old to run on Windows these days. I met Jim Gimpel a few times back in the days when one travelled to software development conferences, even for me across the Atlantic, to discuss and find new tools. Much longer ago than I care to remember. -
If you right-click the EXE and select Properties/Compatibility, is 'Run as administrator' checked? This setting would survive rebuilding and would also be unique to your own VM where it is running, as well as independent of the manifest it contains.
-
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