[fpc-devel] tkLString vs tkAString
Ondrej Pokorny
lazarus at kluug.net
Tue Nov 30 13:49:36 CET 2021
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
More information about the fpc-devel
mailing list