-
Content Count
3303 -
Joined
-
Last visited
-
Days Won
110
Posts posted by Lars Fosdal
-
-
Thanks, @Attila Kovacs - I wonder how I could overlook GetDeclaredProperties? I guess I will have to blame lack of coffee.
-
MariaDB - the fully opensource branch of MySQL (which is Oracle owned), is ACID.
https://mariadb.com/resources/blog/acid-compliance-what-it-means-and-why-you-should-care/Edit: Sorry, that was ClustrixDB, a variant for the cloud
-
Setting RowSetSize to f.x. 100 doesn't really help you if you need to get rows 19.900 -> 19.999 - because that implies that you also need to read all the rows before 19.900 to get there.
Pagination and getting the top (n) rows from an arbitrary offset, f.x starting at row 20.000 - is not something that FireDAC handles well by itself, and server side pagination is very much per SQL Server type.
Some examples:
Oracle: https://blogs.oracle.com/oraclemagazine/on-top-n-and-pagination-queries
SQL Server: https://stackoverflow.com/questions/109232/what-is-the-best-way-to-paginate-results-in-sql-server
-
I want to recursively walk the properties of MyVar: TMyOuterType - but the Items list may be empty.
How can I walk the base element type of Items, i.e. TMyType - when I have no instance data?
type TMyType = class public property One: string; property Two: string; end; TMyType2 = class(TMyType) public property Two: string; end; TMyType3 = class(TMyType2) public property Three: string; end; TMyTypeArray = TArray<TMyType>; // i.e. polymorphic TMyOuterType = class public property Items: TMyTypeArray; end; var MyVar: TMyOuterType;
-
I wonder, would it be nice to channel posts on QP issues to a specific sub-forum?
f.x. "Delphi Bugs & Issues" Sub-titled "Reported to QualityPortal"We do get a certain amount of these, particularly around new releases.
- 4
- 1
-
1 hour ago, Arnaud Bouchez said:Perhaps fun for you, but certainly complicated and slower than a simple "while" loop, especially when the process within the loop is small and the range is huge.
The duplicated SetLength() is just so "funny".The duplicate SetLength was a lazy way of avoiding the corner case math check. It may occasionally reduce the length of an array, which afaik is not that costly?
Some points for doing it this way:- it is a reusable pattern without embedded logic in the loop, which gives readable code
- we could do it the same way for a TArray<double> with fractional fractional increments
- a similar pattern can be used to fetch pre-calculated arrays
There are so many ways to use Delphi -
Not efficient, not tested, but fun 😄
User exercise - make a Range.AsDouble(0, 5, 0.25)type Range = record class function AsInt(const aFrom, aTo: Integer; const aStep: Integer = 1): TArray<Integer>; static; procedure Test; end; class function Range.AsInt(const aFrom, aTo, aStep: Integer): TArray<Integer>; var ix, n: Integer; v: Integer; begin n := ((aTo - aFrom) + 1) div aStep; SetLength(Result, n + 1); v := aFrom; ix := 0; while v <= aTo do begin Result[ix] := v; v := v + aStep; end; SetLength(Result, ix + 1); end; procedure Range.Test; var ix: Integer; begin for ix in Range.AsInt(0, 11, 2) do begin Writeln(ix); end; end;
- 1
-
You can also consider handling the application wide WM_ACTIVATEAPP where WParam = 0 when you lose focus and 1 when you get focus- and then explicitly hide/restore your floating forms.
- 1
-
IMO, as I've requested before - EMBT really need to consider ARM64 and VCL for RAD Studio.
QuoteToday, Microsoft announced that with the release of Visual Studio 15.9, ARM64 development is officially available. The news comes after the firm released a preview SDK back at its Build 2018 developer conference in May. ARM64 support isn't just for UWP apps, or even Store apps. Any Win32 app can be recompiled with ARM support; of course, if developers want their apps to work in S mode, they'll need to port them to the Microsoft Store. Naturally, compiling a UWP app for ARM64 is easier, as it's just an extra checkbox. Win32 app developers need to add an ARM64 configuration.
https://www.neowin.net/news/microsoft-is-now-accepting-arm64-apps-in-its-windows-10-store
- 1
-
True. My point was that relying on the const keyword as "security against tampering" is - as David also points out - a bit of a gamble.
-
Another variation
type PTestRec = ^TTestRec; procedure Test7( const rec: PTestRec ); begin rec.Change( 7 ); end; ... Test7( @rec ); Writeln( rec.Value );
shows 7
-
Whichever DB you decide to use - don't expose the DB as remote storage for to your game clients, but use a REST interface or similar instead.
This isolates the game client from the storage technicalities, and you can change the databases without having to change the game client.
It also reduces the risk of someone meddling with the DB - at least as long as you handle the REST data properly and ward off SQL injection attempts.
- 1
-
Precisely 🙂
More often, it is about devs doing operational care and maintenance, first line support, etc - or devs doing tasks such as second line failure / error analysis and verifying that a problem can be reproduced before escalating. -
On 11/12/2018 at 1:28 AM, Georgge Bakh said:Also a compiler is not needed for IDE tooling.
Code Insight/Completion, Error Insight, Background Compilation - all depends on various parts of the compilers.
- 1
-
QuoteClearly, it’s time to look at what you have your developers working on, and to free them from menial tasks to create products that drive business value.
https://sdtimes.com/softwaredev/industry-watch-the-developer-transformation/
- 2
-
what if you first extract it as a pointer, and then cast the pointer to TWndMethod?
- 2
-
-
Using The Old Reader (https://theoldreader.com/), it seems like the rssalltopics.xml (Forums) gives the best readability, while the 1-new-topics.xml (New Topics) sort of mangle the contents.
Both should probably be modified to contain "Delphi PRAXiS" instead of the "New Topics" / "Forum topics" - as the name doesn't really show up in the RSS readers.
Forums: Embedded graphics is nice.
Forums: Easier to read code snippets
Forums: Clickable URL is nice.
Forums: Showing something that resembles the original formatting is nice.
-
I just realized
-
How do the two differ?
Do you plan to offer both?
-
New official Embarcadero forums online
http://community.idera.com/developer-tools/The sign-up/login is a bit prickly at first, so keep your login name / login email and password at hand, and request a password reset if your get into problems.
-
Same problem. I also see the site is lacking https.
-
Like @David Heffernan suggests, we override the version numbers from our Continua CI build server, using the same version/build number across all apps within the separate branches, and updating them through FinalBuilder parameters.
Current versions:
Devel is 2019.3.12.11451 and Pilot just went from 2018.11.6.5035 to Live 2018.11.6.36
As you can see, the version is y.m.d.BuildNo where the day is the planned release date.
Devel build numbers start at y.m.d.10001 and are periodically reset.
Pilots at y.m.d.5001 -> 5xxx
Live at y.m.d.xxx + 1
We are trying to limit ourselves to three major releases per year, and avoid introducing breaking SQL Schema changes between the major releases.
We still have too many hotfixes. The previous Live version had build number 353. Note that doesn't mean we had that many actual roll-outs, just that many commits 😛
- 1
-
I got 32Gb RAM, and I rarely go above 18-20Gb - so I got a lot of RAM to spare for IDEs excessively wasting memory.
- 1
- 1
property Items: TArray<TMyType> - enumerate props of TMyType?
in RTL and Delphi Object Pascal
Posted
Or ... lack of sleep. I was looking at the wrong context. I should have mentioned that I need to walk a complex structure, and I would like to do it recursively, and not specifically for this particular element type.
I need to use rt.GetProperties to get the inherited props as well.