2012-02-26 29 views
6

Tôi có lớp này:Làm thế nào để lấy giá trị mặc định TRTTIParamter của

TMyClass = class 
public 
    function DoSomethingNice(const Value: string = 'Yes please!'): Boolean; 
end; 

Bây giờ, sử dụng RTTI, là nó có thể để có được giá trị mặc định của tham số Giá trị của phương phápDoSomethingNice? nếu vậy, làm thế nào?

Tôi chủ yếu quan tâm đến giải pháp D2010, nhưng XE cũng sẽ làm.

+2

cho bây giờ là không thể, nhưng bạn có thể bỏ phiếu trong này [QC 93.943] (http://qc.embarcadero.com/wc/q cmain.aspx? d = 93943) – RRUZ

+0

@RRUZ cảm ơn bạn, tôi đã không chắc chắn về điều này, nhưng đã mong đợi nó ... – ComputerSaysNo

Trả lời

11

không thể, vì RTTI không có thông tin về các tham số mặc định. giá trị tham số mặc định chỉ được sử dụng tại thời gian biên dịch

như vậy, nếu chúng ta có ... procedure test(x : integer = 3) và sau đó gọi phương pháp không có giá trị tham số: test() sau đó nó sẽ được biên dịch như test(3)

để kiểm tra điều này, bạn có thể mở cửa sổ CPU trong debugger: và test() trông giống như

mov eax, $00000003 
call test 
+0

cảm ơn bạn teran! – ComputerSaysNo

Các vấn đề liên quan