On 30.11.2021 13:43, Marc Weustink via fpc-devel wrote:
On 30-11-2021 13:37, Michael Van Canneyt via fpc-devel wrote:
On Tue, 30 Nov 2021, Marc Weustink via fpc-devel wrote:
Hi,
I ran into an issue with a piece of ported Delphi (6) code and RTTI.
Part of the Delphi code was based on strings with a RTTI type
tkLString where in FPC the type appeared to be tkAString. Fixing
this was easy, but it made me wonder what the difference is between
them.
From the documentation:
Source position: rttih.inc line 22
type TTypeKind = (
...
tkLString, Longstring property.
tkAString, Ansistring property.
So there is apparently a LongString type and an AnsiString type.
However if you search (google) the documentation on LongString, you
only find references to AnsiString.
My question: What is the difference (if any) ?
This dates from long ago...
Longstring was an idea for a shortstring/ansistring kind of string -
unlimited length but no reference counting.
But it was never fully implemented.
Ah, that explains. So technically the delphi tkLString is the fpc
tkAString and the fpc tkLString does not exist.
Yes:
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.TypInfo.TTypeKinds
The RTTI in FPC differs a little bit from the Delphi's and therefore
IFDEFs are needed in shared code. E.g. tkBool and tkUChar from FPC don't
exist in Delphi either.
I assume MvC knows more details - that is just what I stumped upon.
Ondrej
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel