2012-02-01 30 views

Trả lời

12

Bạn có hai lựa chọn

1) Sử dụng phiên bản quá tải trong đó sử dụng một chuỗi thay vì một TLocaleID

class function Create(const LocaleName: string): TFormatSettings; overload; static; 

2) Vô hiệu hóa cảnh báo địa phương

{$WARN SYMBOL_PLATFORM OFF} 
    fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT); 
{$WARN SYMBOL_PLATFORM ON} 
+5

Tùy chọn 3. Tắt cảnh báo trên toàn cầu. Nếu bạn không bao giờ xây dựng cho các nền tảng khác với Windows, không có nhiều điểm trong việc kích hoạt nó ở tất cả. –

+0

Nếu tôi chọn sử dụng phiên bản chuỗi, chuỗi đó tương đương với LOCALE_USER_DEFAULT là gì? – croceldon

+0

thử sử dụng chuỗi rỗng hoặc hàm tạo không có tham số, hàm này sẽ gọi [GetThreadLocale] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318127%28v=vs.85%29. aspx) chức năng nội bộ. chỉ cần cẩn thận với các cuộc gọi đến 'SetThreadLocale' vì có thể thay đổi kết quả của hàm này. – RRUZ

2

Có các tình trạng quá tải khác nhau của TFormatSettings.Create. Cái có LCID là đặc trưng cho Windows. Người không có tham số và người tham gia một tên miền địa phương dưới dạng một chuỗi có thể di động hơn.

Hoặc bạn có thể chặn cảnh báo cho các đơn vị và quy trình cụ thể cho nền tảng, nếu bạn biết phần mềm của mình sẽ không bao giờ được sử dụng cho bất kỳ thứ gì khác ngoài Delphi cho Windows. VCL chứa dấu vết của các nền tảng không được hỗ trợ như Linux (Kylix) và .NET (Delphi.NET), và vì chúng có thể chết, làm cho mã của bạn di động với các nền tảng đó có thể lãng phí thời gian.

2

Mã của tôi hiện nay là được viết như sau:

{$IFDEF VER220} 
    FormatSettings := TFormatSettings.Create(GetThreadLocale); 
{$ELSE} 
    GetLocaleFormatSettings(GetThreadLocale, FormatSettings); 
{$ENDIF} 

Bạn có thể sẽ muốn điều chỉnh IFDEF đó cho các phiên bản tương lai thích hợp, nhưng nó đưa ra ý tưởng.

+0

Đoạn mã này thực sự là do độ lớn cụ thể hơn so với nền tảng mà trình biên dịch phàn nàn. – OnTheFly

+0

@ user539484 Có lẽ, nhưng IIRC tôi đã nhận nó từ sự giúp đỡ theo cách được khuyến nghị. – mj2008

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