2012-02-23 20 views
17

Tôi muốn có những điều sau đây:Làm thế nào để đánh dấu là bị phản đối một giá trị enum duy nhất trong Delphi

TEnumType = (
    etValue1 = 1, 
    etValue2 = 2 deprecated, 
    etValue3 = 3); 

Nó trả về:

[DCC Error] unt_CollectionImportType.pas(19): E2029 ',' or ')' expected 
but identifier 'deprecated' found. 

Có cách nào để hướng dẫn các trình biên dịch rằng giá trị này là không được chấp nhận.

+1

Tôi không nghĩ đó là có thể, một trong những cách sẽ được sử dụng {$ ĐIỆP cảnh báo 'TEnumType.etValue2 bị phản đối'} để cho người dùng biết rằng nó bị phản đối ... – ComputerSaysNo

+1

Câu trả lời đơn giản là không –

+4

@ dorin Điều đó không tốt. Điều đó chỉ tạo ra một cảnh báo mỗi khi bạn biên dịch thay vì khi bạn sử dụng biểu tượng. –

Trả lời

33
type 
    TEnumType = (
    etValue1 = 1, 
    etDeprecated2 = 2, // was: etValue2; Renamed so we can deprecate it by name 
    etValue3 = 3); 

const 
    etValue2 = etDeprecated2 deprecated; // Declares a constant mapped to the renamed enum value. 
+0

Điều đó không chỉ mất etValue2, và không etDeprecated2? –

+0

@Rudy: Chắc chắn, nhưng giả định là etValue2 được sử dụng để được khai báo trong enum và được refactored ra ở trên. – afrazier

+7

@Rudy - vâng, nhưng đó là mục tiêu. Thay thế giá trị enum thực tế bằng tên không được sử dụng, sau đó khai báo giá trị enum hiện tại (không được chấp nhận) dưới dạng 'bí danh' cho tên mới và đánh dấu * alias * là không được dùng nữa. Mã hiện tại đang sử dụng tên cũ (bí danh) và do đó việc sử dụng tên giá trị không được chấp nhận được báo cáo qua cảnh báo của trình biên dịch. Câu trả lời này giải quyết vấn đề một cách hoàn hảo, và khá thông minh quá imho. – Deltics

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