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

Reply via email to