Hàm NameFld trả về tên của thuộc tính là TTypeInfoFieldAccessor
.
này cho phép bạn làm như sau:
MyPropertyName:= MyPropInfo.NameFld.ToString;
if (PropInfoA.NameFld = PropInfoB.NameFld) then begin
writeln('property names are the same');
end;
Các cửa hàng TTypeInfoFieldAccessor tên của một tài sản trong một shortstring nội bộ.
Vì trình biên dịch NextGen không hỗ trợ shortstrings, nên sử dụng loại PByte
.
(tôi đoán tác giả không muốn xả rác nguồn với ifdefs và tách ra các tài liệu tham khảo PShortstring)
Các đầu vào của Tail
là một PByte trỏ đến lĩnh vực chiều dài của shortstring nội bộ.
Đây là mã nguồn cho đuôi.
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;
Vì shortstrings không bị chấm dứt, bạn không thể thực hiện vòng lặp "loop for null char found" đơn giản.
Do đó một vòng lặp từ đầu đến đuôi có thể sử dụng để chuyển chuỗi ngắn thành chuỗi bình thường.
Kỳ lạ trong mã nguồn RTL thực tế, byte dài được sử dụng ở mọi nơi thay vì hàm tail
; vì vậy nó trông giống như một còn sót lại.
Sẽ có ý nghĩa hơn khi bao gồm hàm size
và tách ra tail
.