Tôi có ghi lại loạiLàm thế nào để có được tài sản của 'kỷ lục' loại sử dụng TypInfo đơn vị
TDoublePoint = record
X : Double;
Y : Double;
end;
này sau đó tôi có đối tượng với tài sản
uses ..TypInfo;
TCell = class(TPersistent)
private
FZoom : TDoublePoint
published
property Zoom : TDoublePoint read FZoom write FZoom;
end;
này Nhưng khi tôi muốn nhận được PropInfo thuộc tính này với chức năng này:
function GetKind(AObject:TObject; Propertyname :shortstring):TTypeKind;
var p :ppropinfo;
begin
p:=GetPropInfo(AObject, Propertyname); // <p = nil
Result:= p^.proptype^.Kind;
end;
.. ..
c := TCell.Create;
GetKind(c, 'Zoom'); // <- error
c.Free;
tôi nhận lỗi, bởi vì biến p là con số không trong hàm.
Nhưng tại sao? Có tkRecord
trong TTypeKind, vì vậy tôi mong đợi không có vấn đề gì để đọc/ghi tài sản của loại bản ghi, nhưng có vẻ như, không thể (?) Tìm kiếm của Google không nói nhiều.
thanx để làm rõ ... cách duy nhất để giải quyết sự cố, là thay đổi bản ghi thành đối tượng, tôi thấy – lyborko
Có, và đảm bảo nó xuất phát từ 'TPersistent' hoặc hậu duệ của nó. –
Thực ra, câu trả lời của tôi hơi gây hiểu nhầm. Nó * IS * có thể trong Delphi 7, nhưng nó có lẽ không phải là giải pháp bạn đang hy vọng. Tôi đã cập nhật câu trả lời của mình. –