2008-11-18 25 views
5

Tôi có một ứng dụng hoàn toàn unicode tương thích trong Delphi 2006. Tôi đã thay thế tất cả AnsiStrings bằng WideStrings, thay thế tất cả các điều khiển VCL bằng điều khiển TNT và thay đổi tất cả các chức năng chuỗi từ AnsiStrings thành WideStrings. Có vẻ như tất cả công việc đó không có gì, bởi vì tôi sẽ phải đảo ngược tất cả. Có anyway để lừa Delphi 2009 vào suy nghĩ Widestrings trong thực tế, UnicodeStrings?Chuyển ứng dụng Delphi 2006 sang Delphi 2009

+0

Bằng cách này, hãy chấp nhận câu trả lời ở đây ..... –

Trả lời

13

Không, thực sự không có. Nhưng bạn sẽ không hối tiếc công việc để thực sự Unicode cho phép ứng dụng của bạn.

Điều khiển TNT có thể dễ dàng được thay thế bằng các điều khiển VCL thông thường. Bạn có thể làm điều đó khá đơn giản bằng cách sử dụng trình hướng dẫn từ GExperts (http://www.gexperts.org) thay thế một loại điều khiển với một loại điều khiển khác một cách tự động.

Sau đó, bạn có thể thay đổi tất cả các khai báo WideString thành các chuỗi thông thường. Chuỗi bây giờ là một bí danh cho UnicodeString, và vì vậy tất cả các chuỗi của bạn có thể giữ dữ liệu Unicode tốt.

BTW, tác giả của bộ điều khiển TNT, Troy Wolbrink, hiện nay thích Delphi 2009 hơn các điều khiển của riêng mình.

+1

Và nếu tôi có thể nói, một số tài nguyên tốt nhất hiện có để chuyển đổi mã của bạn thành unicode delphi là các giấy trắng được viết bởi một số người tên là nick. Ngoài ra, có một cuốn sách khá hay của Marco Cantu, bao gồm cả việc chuyển đổi theo chiều sâu. Có rất nhiều lý do, và có rất nhiều tiền trả lại để có được trong việc cho phép ứng dụng của bạn đi đến bản địa Unicode delphi. Tôi đã thực hiện nó cho ít nhất một tá ứng dụng chính. –

+0

Vâng, shucks, Warren. :-) –

0

Ưu điểm chính của Điều khiển TNT chỉ là nó có thể hoạt động như chương trình Ansi trong Windows 9x. Nó không phải là unicode đầy đủ. Nếu bạn muốn hỗ trợ unicode đầy đủ ở khắp mọi nơi (chẳng hạn như Stringlist.LoadFromFile, Form.OnKeyPress), bạn nên chuyển sang Delphi 2009.

+0

Tôi thậm chí còn thay thế các chuỗi danh sách ở khắp mọi nơi bằng WideStringLists. Các tập tin văn bản có unicode trong Delphi 2009 không? Tôi đã thay thế tệp văn bản bằng Filestreams. – Steve

+0

Bạn có thể tải văn bản unicode với danh sách mở rộng, nhưng bạn không thể tải văn bản từ tệp có tên tệp không phải là ansi, đơn giản như bạn đã làm với tên tệp ansi. – samir105

0

Tôi đã làm điều tương tự trong một ứng dụng sử dụng các tệp XML khác nhau làm đầu vào. Trong trường hợp của tôi, tôi đã làm việc với UTF-8 (vì vậy chúng tôi có thể sử dụng các chuỗi thông thường) trong suốt chương trình và chỉ chuyển đổi thành WideString cho mục đích hiển thị (điều khiển TNT).

Tôi đã loại bỏ các chuyển đổi qua lại giữa WideString và UTF-8 và thay thế các điều khiển TNT bằng các điều khiển VCL thông thường bằng tay vì chỉ có một số biểu mẫu.

Quá trình chuyển đổi mất khoảng một giờ với thử nghiệm. Mã này đơn giản hơn và chương trình nhanh hơn đáng kể.

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