Leaderboard
Popular Content
Showing content with the highest reputation on 03/21/25 in all areas
-
NexusDB components are now available in the new 64 bit IDE 👍 v4.7514 adds - 64 bit Designtime Support - Replication (Beta) Find the best Delphi Database at NexusDB
-
Is there a way to -detect- that the VCL has been accessed from outside of the main thread?
Uwe Raabe replied to Der schöne Günther's topic in RTL and Delphi Object Pascal
Indeed there are: Set TControl.RaiseOnNonMainThreadUsage := True This will raise an EInvalidOperation when CheckNonMainThreadUsage is called for a control. This is automatically done inside CreateWnd. -
RAD Programmer Coding Challenge #1 - build a MineSweeper game in RAD Studio with a chance to with $500
Marco Cantu replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Can I participate with a program written 25 years ago? https://github.com/MarcoDelphiBooks/MasteringDelphi5/tree/master/WebBonus/22/MINES -
For years LSP has been broken on our very large code base. The main problem being "Find Declaration" is non-functional. We also experience problems when switching between Win64 and MacOS build targets; usually doing so without cleaning the project results in the IDE crashing or the compiler crashing or both. I complained about this earlier today in this post: Today, I was stepping through code in our MacOS build when I noticed that the IDE was taking me to the wrong source file. That clued me into what was going on. This project has about 40 local copies of Delphi source files to fix various bugs and add some needed access to private fields, etc. (Trust me, we hate to do this, we don't want to do this, but when the FMX code base assumes only one thread will ever want to use bitmaps and stuff like that, we have no choice). Of course these local copies appear first in the search path. This naturally necessitates that the other source files are rebuilt, and they are listed in the search path, lower down. The compiler works perfectly fine; our modifications are built without issue. But the IDE and LSP hate this. While stepping through code, it took me to the original FMX.COntrols.pas file, not the local copy that is being compiled into the build. No amount of tweaking the search path or browsing path helped. This got me thinking that this could be related to code navigation issues. So I went into the Rad Studio installation folder and renamed all of the source files for which we have a local copy, so that it would be impossible for the IDE or LSP Server to reach them. And like magic, every single problem I have been having with code navigation suddenly went away. Even switching between MacOS and Win64 build targets and compiling became a seamless operation. So, it appears clear that the LSP Server and IDE do not take the same clues as the compiler or linker or whatever when it comes to search paths. And chaos ensues, due probably to incompatible interfaces that exist between unmodified fmx classes and our local forks. Now I could be overstating the effectiveness of this fix, but I spent an hour doing things I know break the IDE and they all worked. The problem is now I have gone nuclear on the Delphi source folders and no other projects can use them. What I would like to do is have a different copy of the BDS /source/ folder that is used for this project. But we already know a wholesale copy into the search path won't fix it, because those files are already there. We need the IDE to treat a different folder as canonical for $BDS/source. I already use the -r command line switch for the IDE to isolate this project into its own registry hive, but I could not find a way to override the BDS variable (nor do I think that is the right solution). This brings me to my question -- going to Tools/Options and trying to override the BDS environment variable creates an error since it is "built-in." My current solution is clunky -- maintain two source copies of the BDS source folder, one with all the files and one with files removed that we have local copies of -- and switch between the two depending on what project I am working on. But is there a way to tell the IDE and LSP Server to use a different source folder? (Probably not, because if so, it would already be working based on the project settings, LOL!) If I can get time I may try to make a small project that reproduces one of these problems, but this is a million+ line project and it could have to do with a combination of factors, not just the fact that we have local copies of stuff like FMX.Controls with incompatible interfaces.
-
How I fixed LSP (sorta) and a question
Brandon Staggs replied to Brandon Staggs's topic in Delphi IDE and APIs
Of course. If someone wants to pay me my going rate, I'd stop everything and create one. As it stands, I hope to find time to work on creating one. The million+ lines of code that don't belong to me can't just be posted in attlasian's system. -
Personally, I create .pkg files - using the create installer function of Mosco.
-
RAD Programmer Coding Challenge #1 - build a MineSweeper game in RAD Studio with a chance to with $500
havrlisan replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
I've seen a few people discussing their development and posting screenshots in the Skia4Delphi telegram group. -
function declarations without ; at the end
eivindbakkestuen replied to Günther Schoch's topic in RTL and Delphi Object Pascal
Best guess, with a bug report, Emb will fix the pascal unit, but not change the compiler. But it needs to be logged first, no need to ask anybody 🙂 -
Tool for finding non-literal format strings
Remy Lebeau replied to David Heffernan's topic in General Help
Or, more simply, just detect a function call involving an "array of const" argument preceded by a string argument, and then warn if the string argument is not a literal. -
Is there a way to -detect- that the VCL has been accessed from outside of the main thread?
Remy Lebeau replied to Der schöne Günther's topic in RTL and Delphi Object Pascal
FYI, you can create and use a VCL TBitmap in a worker thread, you just have to lock the bitmap's Canvas to prevent the main thread from releasing the bitmap's GDI resources. The new TControl.RaiseOnNonMainThreadUsage property was introduced in 11.0 Alexandria: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/What's_New#Threading_safety_improvement However, it is currently only being used by the VCL when a TWinControl's window is created, not when it is accessed. Fortunately, there is a new TControl.CheckNonMainThreadUsage() method that is public, so you can call it for your own purposes before you access a UI control's members. -
Tool for finding non-literal format strings
Rollo62 replied to David Heffernan's topic in General Help
RegEx? -
function declarations without ; at the end
Lars Fosdal replied to Günther Schoch's topic in RTL and Delphi Object Pascal
I see the same in the D12.3 source, but no errors show in the IDE. I copied the source to another unit and compiled it and it doesn't care about semi-colons for external function declarations - not even for those with the delayed keyword. Bug or feature? I don't know, but it certainly is not consistent with the rest of the language. -
Edit: as was pointed out by someone else, this non-native speaker may not mean what I mean by "new architecture." But here's what I was referring to: 42 minute mark. Listen carefully where he says there will be a "new architecture" in the next major release.
-
Me Either.
-
Other companies (e.g. Steema (TeeChart)) have offered me remote assistance via TeamViewer (their choice, not mine) with a compilation / installation problem. Embarcadero could do something similar at least for customers with subscription and "Platinum support" to track down this annoying problem. We do not have Platinum support, but if we had and could reproduce this problem reliably, I would insist on something like this. Embarcadero is always bragging that they have some large enterprise customers. Customers like this should be able to pressure them to get their act together.
-
-
The status of "System.SysUtils.Now" timer resolution & accuracy
Anders Melander replied to Rollo62's topic in RTL and Delphi Object Pascal
OP: Unambiguous question about the behavior of X A: Here's some code that does something similar but doesn't answer your question. OP: Okay but what about my question about the behavior of X A: Here's some data that also doesn't answer the question. OP: Thanks but... B: Have you tried <something else> instead? OP: *flips desk* 🙂 Apart from that, https://www.scientificamerican.com/article/time-s-passage-is-probably-an-illusion/ But seriously, ignore the help. It's obviously not up to date. The behavior of Now is never going to change to match the help because that would break a lot of code and nobody needs it to have 1 second resolution. Even in Delphi 1 (which implemented Now as Date (and Time via the DOS INT 21h, function 2Ch (which had 10 mS resolution))) the resolution was better than 1 second. I too would go for TStopWatch - even if you don't need the precision. -
RAD Programmer Coding Challenge #1 - build a MineSweeper game in RAD Studio with a chance to with $500
Darian Miller replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Sure - you may be the only entry so it could be an easy $500! LOL