2008-12-17 26 views

Trả lời

26

Không, chúng không phải là không chính đáng.

WideString chỉ là trình bao bọc cho loại ActiveX/COM BSTR. Bạn cần nó khi làm việc với các chuỗi trong ActiveX/COM.

String trong Delphi 2009 trở lên là bí danh cho UnicodeString, có thể chứa các ký tự Unicode, giống như BSTR, nhưng không giống như WideString. WideString được cấp bởi trình quản lý bộ nhớ COM và không được tính tham chiếu. UnicodeString được cấp bởi trình quản lý bộ nhớ RTL và được tính tham chiếu, giống như AnsiString.

Bạn nên sử dụng (Unicode)String bất cứ khi nào có thể và chỉ sử dụng WideString cho tương tác COM hoặc xử lý thư viện cũ sử dụng WideString để hỗ trợ Unicode.

7

Dường như câu trả lời là here:

Sự thay đổi ngoạn mục nhất trong Delphi 2009 là “chuỗi” loại hiện nay là một bí danh cho UnicodeString thay vì AnsiString.

4

Xem bài viết này bởi Marco Cantu trong đó vạch ra các hoạt động của chuỗi (ví dụ UnicodeString) trong Delphi 2009:

"Giấy trắng: Delphi và Unicode"

http://dn.codegear.com/article/38980

Về cơ bản, đó là những gì Roddy nói, nhưng phải mất 27 trang để đi vào chi tiết.

6

Một điều quan trọng khác cần lưu ý là sự khác biệt hiệu suất.

Trong giấy trắng Marco Cantu của (gọi tắt trong câu trả lời moodforaday của) nói:

"WideString đã (và vẫn là) không tài liệu tham khảo tính và cực kỳ kém về hiệu suất và tính linh hoạt (ví dụ, nó sử dụng bộ cấp phát bộ nhớ toàn cục của Windows thay vì FastMM4 gốc). "

Hầu như mọi hướng dẫn nâng cấp cho Delphi 2009 Tôi đã thấy đề xuất bạn chuyển đổi tất cả các chuỗi rộng thành chuỗi.

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