[fpc-devel] ConvUtils: ConvTypeToFamily and ConvFamilyToDescription conundrums
Bart
bartjunk64 at gmail.com
Wed Jun 8 15:14:26 CEST 2022
On Wed, Jun 8, 2022 at 11:43 AM Bart <bartjunk64 at gmail.com> wrote:
> And another observation: on Delphi 7 TConvType seems to be unsiged (in
> fpc it's signed).
Actually it is documented to be of type Word:
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.ConvUtils.TConvType.
I guess nobody needs more than 65536 conversion types, so most likely
not a problem.
So, this is not an implementation detail (which we could simply
ignore), but actually it is now a bug.
Changing our TConvType to word will potentially break existing programs though.
Consider the following code:
uses
convutils,sysutils;
var
Fam: TConvFamily;
Fams: TConvFamilyArray;
Len: Integer;
begin
GetConvFamilies(Fams);
Len := Length(Fams);
if (Len=0) then
writeln('Nothing registered yet');
for Fam := Low(Fams) to High(Fams) do
writeln(format('%d: "%s"',[ord(fam),ConvFamilyToDescription(fam)]));
end.
If Len=0 this then High(Fams) will be Word(-1) and the loop will print
65536 non-existing families.
(Which is why you should always use signed integers in a for loop)
All this leads me to the conclusion that they (the Greek) did not
really desing this unit very well.
--
Bart
More information about the fpc-devel
mailing list