Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by timfrost

  1. timfrost

    Best components for creating windows service apps

    Yes, I no longer remember when I applied the patches; for each compiler change I just update the compiler defines, build and test. Occasionally I may have had to tweak something.
  2. timfrost

    Best components for creating windows service apps

    I am using DDService successfully in Delphi 10.3; my patched files have a 2013 date and do all that is currently needed in our service applications. I look forward to checking them against your versions in due course. I have also used SVcom in the past but found DDService easier to implement.
  3. timfrost

    Moving a file that is not yet flushed to disk

    Take a look at SetFileInformationByHandle in MSDN. I have used it for a different purpose (moving a locked open file) but it seems to provide some other tricks which may (or may not) help you.
  4. timfrost

    ANN: StyleControls VCL v. 4.53 just released!

    I agree with your view of Windows 10 default colours, but it is simple to get rid of the default white title bar, so that at least you can find the active window: Settings / Colours / Accent Colour
  5. timfrost

    Reverse scrolling TEdt?

    It is not clear whether you actually need to keep them somewhere structured and ordered, like a stringlist. For a VTV, I would create a nodedata structure for each one containing either the string or a pointer to it, then just insert the node. If you do want an ordered list later, you can just walk the tree; if not, you are done when you have created the node structure and inserted it.
  6. Yes. I have also been using a variant of this code for many years.
  7. timfrost

    Reverse scrolling TEdt?

    While I was typing a message which essentially said, "why not a TMemo", a notification of the first answer here popped up, so I did not bother. And it turns out your real question was as much about organising large numbers of additions as about the component to view them. I have an application which uses a VirtualTreeView for this purpose. This allows you to optimise the loading and updating of the list completely separately from the viewing of it. The VTV handles all the scrolling for you, and you simply insert nodes. Inserting takes much the same time if you insert at the top. bottom, or middle, and the items just appear on the screen, which only has to redisplay the currently visible nodes, wherever you do the insertion. It can be made extremely fast and efficiemt. especially if loading/updating the data is done in a background thread and notified to your inserter code.
  8. timfrost

    Recommendations on visual design

    My advice would be to avoid the smart panel controls that were added to the VCL a few versions ago. They claim to make it so easy but they rob you of control. I think TMS may also have some like that but I don't use them. I prefer to design what the application needs, and to work with plain panels and tabbed controls, grids, etc., with careful use of the align property. I normally use TMS. I don't know of any shortcuts to make all happen automagically, but I am ready to be told of one by someone else here!
  9. timfrost

    Code formatter in CnPack

    I really don't want to start a 'style war'; it is just that I find it easier to see the structure if the 'if' and the 'else' are aligned and each begin/end block stands alone with its own indentations.
  10. timfrost

    Code formatter in CnPack

    I hate this style, but I am pretty sure you can achieve it using the GExperts formatter, the one I have always used. [If not answering the question helps you]
  11. timfrost

    Component installs

    I also have many components, all with source. I always disable the vendor's 'install into the IDE' option. For the few awkward ones who do not allow this, I have the IDE installed on a previous development machine, do the install there, and then copy over the source and project folders. And in most other cases I install the source into a 'components' area which is not my production build area - how do you manage to review every source change if the vendor simply overwrites their previous version, as so many do? After moving the component source into the production build folders (one for each component) I run a FinalBuilder project which builds each component with settings (defined in the FB project) over which I have control. The FB project also installs each component in the IDE by setting the IDE registry keys for it, and I have a program of my own which sets the library and browsing paths for the IDE exactly as I want them to be. All the BPLs and DCPs are each in a single folder. I do much the same as you describe for the DCU and resource files for each project, although for some of the smaller components I do not bother with a separate DCU folder. FinalBuilder is the big timesaver for all this - once set up, you can click once and know everthing will turn out correctly!
  12. timfrost

    Different core file dates in 10.3.2

    There was a 'b' version of the ISO a short while after it first became available. Perhaps this had only a few files changed, and these are now also in the alternate installer (which I have nerer used).
  13. timfrost

    How to reliably know if there is data selected in TVirtualStringTree

    It sounds as if in your VT1mousedown event you should first call vt1.GetHitTestInfoAt to find out whether the mouse has been clicked on a node or not. Once you have the node, it is up to you to work out what you have put in it and whether it is a selected/focused node, and what to do with it if so. Presumably you always ensure that there is a node type or tag in the nodedata.
  14. timfrost

    Restore to maximized: strip to the right missing.

  15. timfrost

    Time Zone Library

    We have used this for many years and found it very robust and comprehensive. For some periods in the past it has not always kept up with every IANA update, but currently it includes the latest one. You can always update the embedded data yourself using the provided compiler, if you subscribe to the TZDB mailing list to get notified of updates. Our software only needs to be aware of future zone and DST changes, not those in the past, so I modified the compiler to omit all the information about which day in 1928 the DST rules were changed in Alaska or Zanzibar, and other such fascinating facts. It's very simple to use if you have a need for the TZ information that IANA maintains.
  16. timfrost

    Shortcut clashes

    @Stefan Glienke What version of MMX are you using? I have Could it be that the default MMX shortcut has recently changed?
  17. timfrost

    Shortcut clashes

    The fact that the shortcut for Debug ... Entire CPU does not work for me has annoyed me for many years, but never quite enough to investigate it. But I am not sure that your analysis is correct. This shortcut is Control-Alt-C, and that in MMX for Copy Entity is Control-Alt-NumPlus. I have never customised any of the MMX shortcuts. The shortcut-owner display in GExperts shows Control-Alt-C as Debug CPU, so I still have no idea what has stolen it; but MMX does not seem to be the culprit here. Edit: I see that Control-Alt-C does work to switch focus to the full CPU window, but only if this window is already open. Another extraordinary EMB feature. If for example I click in the stack window, then this shortcut switches focus to the CPU tab. But it does nothing if I am in the editor window.
  18. timfrost

    Restore to maximized: strip to the right missing.

    When it happens, on my 4k monitor, I find there is a tiny slice of the red X which still works to close the IDE, if you hover the mouse at the edge. Going out of full screen, then back, restores the missing strip.
  19. timfrost

    Passing back a string from an external program

    To answer your question, yes, I have done exactly this. But in my case program 1 was guaranteed to be a singleton on the machine, so I could just create an empty registry key before invoking program 2 and have program 2 place the result there. If you have control over the number of instances of your program 1 you might be able to adapt this solution. It has the advantages of extreme simplicity and needing no extra tools or special functions.
  20. The problem described here is the basic reason (of course there are others) why I have never considered downloading from Getit any tool or component we will use in a production environment. We have source for all the components we use and for every one the BPL/DCP is built by a Finalbuilder project under our control. And if you download and install something from Getit (when it comes back up) how do you check precisely what has changed since you last downloaded it? Where has your older version gone, for comparison?
  21. timfrost

    GExperts Crashes RAD Studio 10.3.2 on Shutdown doesn't crash on IDE 10.3.2 exit here. This is consistent with an incompatibility with some other package that I do not have, but David Hoyle does. I have Documentation Insight, MMX Code Explorer and IDE Fix Pack 6.4.2 installed.
  22. timfrost

    Delphi 10.3 Update 2 available

    @Ian Branch Please read it again. It says name without, value with; and in the picture both without. I referred to the value. But it is immaterial because neither had any effect for me.
  23. timfrost

    Delphi 10.3 Update 2 available

    @Achim Kalwa Your IDEFixPack.DisabledPatches suggestion did not work for me in 10.3.2. The error message still appears. Your post says the value should be entered with quotes, but the screen shot shows it without; however neither option was effective. I also tried putting the value in the system environment and this was also ineffective, with or without double quotes.
  24. For only 200 values you would have to be running your algorithm many times a second in order to detect any differences. I would simply put all the values in an indexed array and every time you update a value, simply check it against the previous lowest value. Then save its index and update the lowest value if necessary. Whether this is practical or not depends on how many threads are simultaneously updating the values, how long the algorithm takes to run, and what the intervals are between iterations of the algorithm. I have no idea whether this is the fastest way to do it, but it is simple, and for 200 items, as I said, I would not care if it took a few microseconds longer. If microseconds are really important to you, then it is essential to test and measure, not guess; so you must ignore my advice.
  25. timfrost


    I have seen "kilometrage" used in UK English, and kilométrage in French. I would vote for it if you organized a competition, although it is ugly and not in wide use. If you are using the word as a column heading, you need something short. But in a descriptive sentence I would prefer a phrase like, "lifetime rolling kilometres" or "total kilometric distance". Googling lifetime kilometres only turns up FitBit links.