-
Content Count
2750 -
Joined
-
Last visited
-
Days Won
162
Everything posted by Uwe Raabe
-
Yeah, that's better. Thanks!
-
On Delphi 10.4.1 the MMX Code Explorer is mostly dead/inactive when running Delphi debugger
Uwe Raabe replied to panie's topic in MMX Code Explorer
As there must be a reason why it doesn't happen here: Any other non-standard plugins installed? -
Delphi keeps asking me to add VclSmp when it is already there
Uwe Raabe replied to obones's topic in Delphi IDE and APIs
TMS Components used to have their own copy of Spin.pas. -
On Delphi 10.4.1 the MMX Code Explorer is mostly dead/inactive when running Delphi debugger
Uwe Raabe replied to panie's topic in MMX Code Explorer
Weird - I have never seen this. A quick test didn't show this either. I will try on a clean Delphi installation later. Meanwhile, can you try with a clean Debug Layout by deleting the Debug Layout.dst from %APPDATA%\Embarcadero\BDS\21.0\ ? -
The idea was to write all units in all uses clauses with their full names instead of relying on the value in Unit Scope Names.
-
Not from the IDEs point of view. When a unit is referenced by a package that is not contained in that package, it looks for other installed packages for this unit. In this case it found one in the getit package. That is standard behavior since ages. Try compiling a package that uses VCL.Controls without mentioning anything in the requires clause. Delphi will suggest to add vcl.
- 5 replies
-
- delphi 10.4.1
- getit
-
(and 3 more)
Tagged with:
-
Just guessing: You are referencing a unit named "Utils" in your project, which you missed to add to the package project directly.
- 5 replies
-
- delphi 10.4.1
- getit
-
(and 3 more)
Tagged with:
-
Are you able to check without Unit Scope Names?
-
TMemo - How to select (highlight) a line of text in code?
Uwe Raabe replied to Incus J's topic in FMX
Have you tried MyMemo.HideSelection := False; ? -
Define Large
-
Indeed, that could be misinterpreted easily. Although it is not necessarily a thread, but could as well be collecting data for a report or consolidate data monthly or other areas where multiple DB actions can be grouped. Obviously it is data is processed or retrieved in the background, where multi-threading steps in. Due to the integrated connection pooling, opening and closing a TFDConnection doesn't cost as much as it did in the past (BDE era that is).
-
That is exactly how I do it. The TFDConnection has the proper ConnectionDefName set. Then, inside the same thread, I open the connection, do all the query stuff and close the connection. All the queries linked to that connection are only used inside that same thread.
-
This may as well be the case for the specific browser currently installed at the customers system. That is another point for the component solution, as you definitely know the capabilities.
- 19 replies
-
- webbrowser
- sqllite
-
(and 1 more)
Tagged with:
-
I am with Dmitry here. Having a separate connection per query is definitely wrong. Interestingly I never made use of that TFDQuery.ConnectionName feature. Instead I have a single TFDConnection instance for a specific part of the program where all necessary queries are connected to. Thus all these queries use the same connection and it works perfectly even in multi-threaded situations. I admit that identifying those groups of queries sharing one connection may sometimes be a bit tricky.
-
Delphi's code formatter vs. GExperts' code formatter
Uwe Raabe replied to dummzeuch's topic in GExperts
I often use this double slash comments at the end of a line to force a line break. const cArr: TArray<string> = [ // 'SELECT *', // 'FROM EMPLOYEE', // 'WHERE EMP_NO > 2', // 'ORDER BY EMP_NO', // '']; (Align line end comments is active here) Without these comments the formatter will produce this: const cArr: TArray<string> = ['SELECT *', 'FROM EMPLOYEE', 'WHERE EMP_NO > 2', 'ORDER BY EMP_NO', '']; -
I am pretty fine with Advanced Virtual Com Port
-
Can you explain a bit more, please?
-
Seems legit. If you have a horizontal scroll bar there is no need for wrapping anything.
-
You are not alone: Parented controls with free notifications aren't scaled Frame with Assigned PopupMenu is wrong Displayed on high DPI A scaled form gets resized to design time ClientWidth/ClientHeight when embeded in a parent form
-
Records, Generics and RTTI meets FireDAC
Uwe Raabe replied to Lars Fosdal's topic in Tips / Blogs / Tutorials / Videos
That's an important point. There are situations where your program is not the only one accessing the data. This doesn't mean that it could not be done different, but sometimes these other systems are out of your reach. -
Records, Generics and RTTI meets FireDAC
Uwe Raabe replied to Lars Fosdal's topic in Tips / Blogs / Tutorials / Videos
Not sure if it fits your needs, but nevertheless this might be an interesting read for you (unless you have already done so): Dataset Enumerator Reloaded And here ist the corresponding rep: DataSetEnumerator -
Remove non-utf8 characters from a utf8 string
Uwe Raabe replied to borni69's topic in Algorithms, Data Structures and Class Design
Yes, there are. One can use this fact to distinguish between UTF8 and ANSI encoding. An ANSI encoded text file can throw an exception when read as UTF8 if it contains certain characters. UTF8 character sequences start with a specific byte range followed by one to three bytes from a different range. Simply exchanging the first two bytes of a UTF8 sequence invalidates the file. -
@timfrost It doesn't matter if what you do with Project Magician is intended usage or not - it should not crash - period. In case this depends on the project file: Can you send me a copy, please?
- 13 replies
-
- project magician
- line breaks
-
(and 1 more)
Tagged with:
-
Can you send me that dproj file? The version info is handled directly when you save the project options from the dialog - or you change the Project Magician options.
- 13 replies
-
- project magician
- line breaks
-
(and 1 more)
Tagged with:
-
Actually, I like this and make heavy use of it. begin if Value.StartsWith(Prefix, IgnoreCase) then Result := Value.Substring(Prefix.Length) else Result := Value; end; is just easier to read than var isPrefixed: Boolean; begin if IgnoreCase then isPrefixed := StartsText(Prefix, Value) else isPrefixed := StartsStr(Prefix, Value); if isPrefixed then Result := Copy(Value, Length(Prefix) + 1, Length(Value)) else Result := Value; end;