2013-04-05 2 views
5

System.TypInfo.TPropInfo는 (적어도 D-XE3에서) 두 함수 멤버가 있습니다. 그 (것)들을 위해 무엇이고 어떻게 사용될 수 있습니까? (희망은 하나 개의 질문 자격이.)문서화되지 않은 회원

답변

2

NameFld 함수는 TTypeInfoFieldAccessor 같은 속성의 이름을 반환합니다.

이것은 당신이 다음을 수행 할 수 있습니다 : 내부적으로 shortstring의 속성의

MyPropertyName:= MyPropInfo.NameFld.ToString; 
if (PropInfoA.NameFld = PropInfoB.NameFld) then begin 
    writeln('property names are the same'); 
end; 

TTypeInfoFieldAccessor 저장 이름.
NextGen 컴파일러는 짧은 문자열을 지원하지 않으므로 PByte 유형이 사용됩니다.

Tail의 입력

내부 ShortString으로의 길이 필드를 가리키는 PByte이다 (나는 저자가 쓰레기로 ifdefs와 소스를 원하고 PShortstring 참조를 찢어하지 않은 것 같아요).

다음은 꼬리의 소스 코드입니다.

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; 

짧은 문자열은 null로 끝나지 않으므로 "null char가 발견 될 때까지 간단한"루프를 수행 할 수 없습니다.
그러므로 시작부터 끝까지 루프를 사용하여 짧은 문자열을 정상 문자열로 전송할 수 있습니다. RTL의 실제 소스 코드에 이상하게
길이 바이트는 tail 함수 대신 사방 사용; 그래서 남은 것 같습니다.
그것은 size 기능을 포함하고 tail을 버리고 더 의미를 만들었을 것입니다.

관련 문제