Funkcja NameFld zwraca nazwę właściwości jako TTypeInfoFieldAccessor
.
ta pozwala na wykonanie następujących czynności:
MyPropertyName:= MyPropInfo.NameFld.ToString;
if (PropInfoA.NameFld = PropInfoB.NameFld) then begin
writeln('property names are the same');
end;
przechowuje TTypeInfoFieldAccessor nazwa własności w shortstring wewnętrznie.
Ponieważ kompilator NextGen nie obsługuje skrótów, używany jest typ .
(Myślę, że autor nie chciał miotu źródło z ifdefs i wyrwane odniesień PShortstring)
Wejście Tail
jest PByte wskazując na długość pola wewnętrznego shortstring.
Oto kod źródłowy ogona.
function TTypeInfoFieldAccessor.Tail: PByte;
begin
Result:=
FData //Start of the shortstring
+ FData^ + //Length of the stringData
+ 1; //Add one for the length byte itself
end;
Ponieważ shortstrings nie są NULL zakończone, nie można zrobić prosty „pętlę aż null char znajduje się” rodzaj pętli.
W związku z tym można użyć pętli od początku do końca, aby przenieść skrót na normalny ciąg.
Co dziwne w rzeczywistym kodzie źródłowym RTL, bajt długości jest używany wszędzie zamiast funkcji tail
; więc wygląda na resztkę.
Byłoby bardziej sensowne włączenie funkcji size
i wyrwanie tail
.