When whas the global FormatSettings variable deprecated?
Posted by jpluimers on 2019/11/05
Reminder to self to check out when [Archive.is] FormatSettings
global variable of type [WayBack] TFormatSettings
was deprecated as it was only documented as of Delphi 2010 but available much much earlier.
–jeroen
via [WayBack] delphi – Is there a consistent global FormatSettings variable availabe? – Stack Overflow
Peter Wright said
Standard EMBT arrogance and insisting on “fixing” what doesn’t need to be fixed whilst ignoring what should be fixed.
OK – not threadsafe. Should be raised as a warning so the programmer can take action if the application uses threads. Similarly the long-standing “FOR variable must be simple local” has now been “fixed” so that with 10.3.2 you are FORCED to use a local variable for purely theoretical reasons.
Whilst these issues go “unresolved” “simply ignored” or “won’t fix because we’re stubborn”:
RSP-20196 : DLL methods incorrectly resolved. Are now not case-sensitive yet the standard is case-sensitive.
RSP-19551: A simple 2-line change to customsort to avoid executing the comparison routine with equal parameters which obviously would return 0 (equal). Can’t publish the fix (copyright) don’t want to perpetually patch-and-recompile the RTL for obvious reasons. Half a day max to fix and verify, but can’t get EMBT to move.
RSP-19169: FP comparison error : Silence. RSP-13792 : FP comparison error : Closed as a “test-case error” when the “test-case” uncomfortably exposes the problem. All based on the misapplied maxim “Thou shalt not compare floating-point numbers because they are approximations”. Er, no – “Thou shalt not compare floating-point numbers AFTER CALCULATIONS because they are approximations”.
RSP-13781: Case for non-integers. Rejected because of the faulty logic behind floating-point comparisons, ignoring other types like strings.
RSP-15275: Registry functions incomplete – can’t use the standard libraries for REG_QWORD and others.
RSP-13777: Multiple USES statements. Just silence. Why not allow a list of
uses libraryname;
statements oruses librarynamelist;
statements? Easier to edit/ comment out than insisting on oneuses librarynamelist;
statement. Just have to ensure that theuses
statements appear in a single block.RSP-13776: use “method” in place of “procedure/function”. This would mean that the code aligns with the documentation and all that is required is for the compiler to look at the token-stream from the tokeniser. For tokens [method] [optional-parenthesised-parameter-tokens] [colon] [typename] [semicolon] replace [method] in the token-stream with [function]. For tokens [method] [optional-parenthesised-parameter-tokens] [semicolon] replace [method] in the token-stream with [procedure]. No requirement then to edit
function
toprocedure
or vice-versa in the implementation code and parallel-maintain in the interface section. Not backward-compatible, but there’s no reason that a converter can’t be constructed to reverse-migrate a project for an earlier compiler version.All easy to do, all useful all ignored but time and energy are wasted on enforcing unnecessary restrictions.
In four or five months, I’ll be getting my subscription-renewal notice and unless EMBT picks up its game, I’ll be ignoring it.
Remy said
The TFormatSettings record was introduced in Delphi 7. The global FormatSettings variable of type TFormatSettings was introduced in Delphi XE. It has not been deprecated yet (AFAIK), but its use is strongly discouraged since it is not thread-safe.
The individual global formatting variables that TFormatSettings replaced were deprecated in XE, and removed completely in XE3.