Jump to content

Tom F

Members
  • Content Count

    211
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by Tom F

  1. Tom F

    Ctrl Tab Ide Plugin

    Does your Ctrl-Tab do the same thing as Ctrl-b <Enter>?
  2. I don't want to install anything into the IDE or any application. Just the pre-compiled demos. Is there a way to download just the demos? It wasn't clear from the https://www.lmd.de/downloads.
  3. Tom F

    Fast mesh charting on macOS

    Any suggestions on a fast charting component for FMX (macOS/Windows. Mobile not needed) that can do a chart like the one below? We're charting a live stream of data that's up to 4 or 5 datasets/second. I haven't dug into Steema or TMS offerings yet. Up until now we've used SDL's ChartPack (shown below) in our Windows-only app and are very happy with it. Preferably will have auto-scaling, pan, zoom, color controls, and be able to handle 10 or 20 thousand points.
  4. Tom F

    Your RAD Studio 10.4 Sydney issues

    Kazantsev: GREAT write-up on the quality site! (I don't mean that sarcastically.)
  5. Konopka KSVC and Bookmarks are now available in GetIt for Syndey Edit: Navigator is also now available.
  6. Me too! It seems like such a trivial thing but my habitual typing is so ingrained to use Parnassus Bookmarks that Iā€™m incredibly unproductive and frustrated without it.
  7. Tom F

    Your RAD Studio 10.4 Sydney issues

    If you're waiting for Raize Konopka KSVC like I am, please vote for this issue: https://quality.embarcadero.com/browse/RSP-29400.
  8. Tom F

    Modern TColorDialog

    TMS has at least one: https://www.tmssoftware.com/site/advofficegraphics.asp. I've used their FMX version and have been happy with it.
  9. Tom F

    Your RAD Studio 10.4 Sydney issues

    For years I used the ISO because I seemed to have problems with the web install. I know this release is supposed to unify the two installers and eliminate problems. However, I still used the ISO. And then I couldn't get GetIt to work to download CodeSite, etc. I asked about this at the GoToMeeting just now. I needed to RTFM. šŸ™‚ Be sure to read the release notes (http://docwiki.embarcadero.com/RADStudio/Sydney/en/Release_Notes) which state:
  10. Tom F

    Profiler for Delphi

    It sounds to me that your main complaint is an economic one? ā€” the vendor hasn't updated the software during the year following your initial purchase (during which time it would be free.) I've had that happen and I know it can be disappointing. TBH, being a small one-man business myself, I've done that on a few occasions to my customers too. šŸ˜Æ The good news as far as I'm concerned is that there are no bug fixes or improvements I'm anxiously waiting for in NQS. I suppose the UI could use a facelift and some rough edges in the workflow polished. But, in general, NQS does what I need it too: I was able to quickly narrow down the bottlenecks in my application and test my fixes. Tom
  11. Tom F

    Profiler for Delphi

    Yes, it's the old TurboPower profiler. The UI didn't bother me. No doubt it could be improved, but I found it easy to understand and get my work done.
  12. Tom F

    Profiler for Delphi

    I used AQTime for many years, but it seemed to me that SmartBear wasn't really interested in the Delphi market and their product suffered ... and was expensive. I more recently purchased Nexus Quality Suite and was very happy with it. Great tool, great support, great modern product: https://www.nexusdb.com/support/index.php?q=node/27156. As someone previously said, "You get what you pay for." NQS was well worth what we paid for it.
  13. Bill, not to start a flame war, but I love the trailing comment on procedures: procedure SomeOp; begin end; { SomeOp } Why? Because when I'm scrolling up from the bottom of a unit, when a procedure's end; statement comes into view, I can immediately identify the procedure without having to scroll up further. As you say, the IDE does not strip empty procedures that have a comment like this. But, IMO, that's a small price to pay. What does bug me is that when I use Shift_Ctrl-C, the IDE puts new methods between the end; and the comment. But even with that hassle, I still prefer the comment.
  14. Is there a VCL component (preferably included in the current Delphi) that shows a grid of items that automatically adds and removes columns as it's resized? I want to show items in alphabetical order across each row, as shown below. (Horizontal snaking) As the grid is resized (when the user resizes its form), I want the grid to automatically add more columns, repopulating as shown below. I know I could populate a TStringGrid, but I'd have to monitor the current width, determine how many columns it can accommodate, resize the grid and then repopulate, etc. Rather than re-inventing the wheel (mine would be wobbly and squeak!) I'd rather just hand a TStringList to a pre-existing visual component and have it handle the details. In case I want to create my own from a TStringGrid, the OnResize event fires multiple times as a user drags the borders of the form. How do I detect that the user has finished resizing so I can repopulate the grid? Three columns A B C D E F G H I When the user widens the form so that it's wide enough for five columns, it would look like this: Five Columns A B C D E F G H I One Column A B C C D F G H I
  15. Thanks, Anders. The List-View control works great for my purposes. THANKS!!
  16. I'm planning to approach the author of another program that captures video data. I'm going to ask her to team up with me, sending the video frames that she's capturing in realtime to my 32-bit Delphi Rio VCL app running at the same time. Her app is probably written in C# or C++. The data will be video frames and maybe 10 or 15 megs each, 30 fps. I don't mind dropping frames so I don't need more than one memory buffer. I don't want her app to block if my app is too busy to pick up his data. In other words, if she has a frame to send and I'm in the process of reading his data from shared memory, he can just skip sending me that frame. Basically, I want some way she can fill a memory buffer and then signal me it's ready. I'd receive a Windows message and read the buffer. She and I would clearly need some locking semaphores so we can access the data safely. And there will be some messaging necessary at startup and shutdown. And I need to have a way of rapidly copying the buffer she provides into a variable in my app. I'd like to propose to her a reliable mechanism that's simple for both of us to implement. I'm okay using third-party tools if necessary for my end (in Delphi) for handshaking and messaging and data transfer. I don't know much about interprocess communication, so I don't know what issues or tools I should be looking at. I've thought a bit about some semaphores and shared memory and PostMessage notifications between our programs, but I don't have any experience in them or other similar tools. About all I know about these types of systems is that they can dramatically fail in unpredictable ways and that they're hard to do right. šŸ˜ž I, of course, don't want to re-invent the wheel, so I'm asking here: Can anyone give me suggestions on how to approach this?
  17. When a user clicks on the TImage below, I want to know which arrow, if any, they've clicked on. The image is loaded in Image1.Picture from a bmp that is loaded at runtime. The code below works on my desktop machine, but not on a laptop, where it most often returns 'You did not click on an arrow.' Perhaps this is due to dependencies on screen size, resolution, color depth, or ??? I'm not really familiar with how HDC, GetCursorPos, and GetPixel work let alone in different environments. Any suggestions for a way to reliably detect which arrow is clicked. 32-bit VCL app. Procedure TForm1.Image1Click(Sender: TObject); const COLOR_VIOLET = 4002090; // Determined empirically by examining at result of GetPixel call below COLOR_PURPLE = 8334696; COLOR_BLUE = 11757312; COLOR_GREEN = 7186176; COLOR_RED = 255; var P: TPoint; dc: HDC; ClickedColor: TColor; begin GetCursorPos(P); dc := GetDC(0); ClickedColor := GetPixel(dc, P.X, P.Y); if (ClickedColor = COLOR_VIOLET) then ShowMessage('Violet') else if (ClickedColor = COLOR_PURPLE) then ShowMessage('Purple') else if (ClickedColor = COLOR_BLUE) then ShowMessage('Blue') else if (ClickedColor = COLOR_GREEN) then ShowMessage('Green') else if (ClickedColor = COLOR_RED) then ShowMessage('Red') else ShowMessage('You did not click on an arrow.') end;
  18. Last year, on Sierra, I was able to run debug my FMX app on a Mac mini (Late 2014, 1.4 i5, 4 GB, SATA) from my Win10 machine. On Catalina, that this machine is almost unusable as a standalone Mac (which isn't a Delphi issue). Running from Delphi 10.3.3 is painful. My app has a small footprint (in CPU and RAM). I'm planning on getting a 3.6GHz i3 MacMini with 8 gigs RAM and SSD. Any feedback or suggestions on this choice?
  19. Tom F

    Mac specs for development

    Thanks, Graham. Helpful information. I decided to upgrade to a 2018 Mac Mini with SSD. Apple makes it too easy to spend money here in Seattle. I ordered it online at 9 am. It was delivered to my front door by courier (at no charge) 90 minutes later! Amazing. While preparing the old 2014 Mac mini to sell, I cleaned the machine and reinstalled Catalina, thinking that perhaps there was something misconfigured. But, no: it was as slow on the clean install as it had been previously.
  20. Is it possible to suppress the display of lines in the debugger's Call Stack that are not in my source? For example: VCL, Kernel, etc. I don't want to see the highlighted lines.
  21. Hi, Dany, No, please don't keep quiet! I appreciate your insight. And it's interesting to me how in your and others' experience, seeing the call stack in the debugger into the RTL is important. My experience is different from yours. I've managed over 1.5 million lines of code over more than a decade. And I've never once encountered an RTL bug. Of course, years and LOC don't prove anything. I mean, maybe the code is trivial and braindead and doesn't do anything that might encounter a bug. Maybe I'd be more informed and a better programmer if I traced into the RTL more often and studied its code. Maybe because I don't do that, I'm really not using the RTL and VCL as effectively as I might. There's no way to know, but I'd think that (in spite of lots of complaints we see online) the majority of Delphi users have never encountered an RTL bug. At least I hope that's true! šŸ™‚ But, maybe I'm wrong. Anyway. I'm not intending to be combative. I just know that my preference would be not to see the RTL in the debugger call stack. It sounds like that's not going to happen, so I'll just have to scroll the stack view in the debugger more often and learn to ignore entries that AFAIK I don't need to see. Thanks again for sharing your experience. I'd be interested in hearing what others have to say about this. But, not in an adversarial way, but because I genuinely wonder how often the RTL stack is important in day to day use.
  22. Hi, Uwe, Actually, I'd find it quite useful to remove VCL entries from the display of the call stack in the debugger. If the call stack is "cluttered" with a lot of VCL entries, it makes visually scanning it more work and may introduce the need to scroll the list. Although there are times that seeing how the VCL is being used might be helpful, most of the time many of us are only interested in our code, not the VCL. Anyway, from the responses I got here, it seems like hiding the VCL in the call stack in the debugger isn't something that can be easily done, if done at all. Thanks for your comment. Tom
  23. Tom F

    Scope of a HotKey??

    Hey, I'm far, far from an expert on these matters so my thinking may be very flawed here. But when app #2 gains focus, perhaps it could send a message (and wait for a response) to app #1 telling it to de-register the hotkey? And then app #2 registers the hot key. And same for when app #1 gains focus, it messages and waits for app #2 to de-register the hotkey.
  24. Tom F

    How to know that a file is not used by another program?

    Not cross platform, but this might interest you: JCLSYSUTILS.Execute().
Ɨ