2009-10-21 35 views
16

Chúng tôi có ứng dụng thương mại lớn mà chúng tôi muốn chuyển đổi từ Delphi 6 sang 2010. Khoảng 10 bộ thành phần bên thứ 3, tất cả đều có mã nguồn ... Tôi đã nghe cảnh báo về Unicode với năm 2010 - Có ai có kinh nghiệm không và hoặc gợi ý?Các vấn đề Unicode chuyển đổi Delphi

Trả lời

1

Tôi đã ở trong cùng một trường hợp gần đây. bạn chủ yếu cần chú ý đến "cạnh" của ứng dụng. Các tệp INI, tệp I/O, tệp nhật ký, v.v. giành các cuộc gọi API từ công việc delphi vì chúng hiện đã kết nối các cuộc gọi API unicode thay thế. kiểm tra từng thành phần của bên thứ 3 để đảm bảo rằng họ sẵn sàng cho Delphi 2009 ... tốt hơn vào năm 2010. thậm chí việc tôi sử dụng cơ sở dữ liệu đơn giản không phải là vấn đề ... gần như mọi thứ đã hoạt động ngay lập tức. nó không phải là một vấn đề lớn. bất cứ điều gì dựa trên kích thước của một nhân vật nên được xem xét.

thực sự sự chuyển đổi quan tâm nhất là 2007_or_earlier -> 2009_or_later.

có rất nhiều cuộc thảo luận/bài viết blog về nó. bạn có thể đọc, đọc, đọc ... hoặc bạn có thể bắt đầu & xem điều gì sẽ xảy ra. (tôi đã làm một số của cả hai). Tôi chắc chắn có các vấn đề "ngăn xếp chồng" thảo luận câu hỏi của bạn. Tôi không giả vờ đưa ra một mô tả chi tiết về những gì có thể xảy ra.

đơn giản là không đáng sợ như âm thanh.

18

Có nhiều tài nguyên có sẵn mà bạn có thể đọc và bạn sẽ hỗ trợ trong quá trình di chuyển từ Delphi 6 sang Delphi 2009/2010 (Unicode).

Bạn có thể sử dụng các bài viết này làm hướng dẫn.

Bye.

+3

Đừng quên Phiên Unicode tôi đã cung cấp trên CodeRage4, nó chứa nhiều tài liệu tham khảo hơn: http://wiert.wordpress.com/2009/09/11/coderage-4-session-using-unicode-and-other-encodings-in-your- chương trình-trò chuyện-và-qa-bảng điểm/ –

+0

@Jeroen, Video Tuyệt vời, Đã thêm;) – RRUZ

3

Bạn sẽ tìm thấy câu trả lời hữu ích trong một số những câu hỏi này StackOverflow:

Move project from Delphi 3 to Delphi 2010

When and Why Should I Use TStringBuilder?

Convert function to delphi 2009/2010 (unicode)

Unicode problems with Delphi 2009/2010 and windows API calls

Ngoài ra, cho những gì nó có giá trị, tôi đã mua Marco Cantu's Delphi 2009 Handbook. Đó là tất cả những gì tôi cần để tạo ra một hội tụ tương đối mượt mà từ Delphi 4 đến Delphi 2009 chỉ trong vài tuần.

alt text http://www.marcocantu.com/dh2009/D2009Handbook_small.jpg

tôi làm, tuy nhiên, khuyên bạn nên đảm bảo các gói bên thứ 3 bạn có một nâng cấp Delphi 2009, hoặc bạn có thể có một số khó khăn thực sự. Chuyển đổi mã của riêng bạn là một điều. Chuyển đổi của người khác là khác.

Tôi sử dụng hai gói của bên thứ ba, cả hai đều có mã nguồn. Cả hai đều có bản nâng cấp, và nhà phát triển của một trong số họ đã viết rằng anh đã gặp rất nhiều vấn đề khi nâng cấp thành phần rất phức tạp của mình lên Unicode của Delphi 2009. Nó mất một vài tháng, nhưng anh đã hoàn thành nó. Và kết quả là, tôi gặp chút rắc rối với việc triển khai thành phần của mình khi tôi nâng cấp.

1

Khoảng 10 bộ thành phần của bên thứ ba, tất cả đều có mã nguồn.

Một điều tôi muốn thêm là nếu thành phần không hỗ trợ Delphi 2009/2010, đừng cố gắng nâng cấp bằng cách hack mã.

Sau đây là những gì tôi được đăng trên How do the new string types work in Delphi 2009/2010?:

Xem Delphi and Unicode, một tờ giấy trắng được viết bởi Marco Cantù và tôi đoán The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), được viết bởi Joel.

Một lỗ hổng là cuộc gọi API Win32 mặc định đã được ánh xạ để sử dụng phiên bản W (chuỗi rộng) thay vì phiên bản A (ANSI), ví dụ: ShellExecuteA Nếu mã của bạn đang làm mã con trỏ phức tạp giả sử bố cục bên trong của AnsiString , nó sẽ phá vỡ. Dự phòng là thay thế PChar bằng PAnsiChar, Char bằng AnsiChar, string với AnsiString và nối thêm A vào cuối lệnh gọi Win32 API cho phần mã đó. Sau khi mã thực sự biên dịch và chạy bình thường, bạn có thể cấu trúc lại mã của mình để sử dụng string (UnicodeString).

1

Tôi phải thêm bài viết này từ Carey Jensen cho những người khác được đề cập. Nó được dán nhãn: "Delphi Unicode Migration for Mortes Mortals: Stories and Advice from the Front Lines" (bằng tiếng Anh). http://www.danysoft.com/free/delphiunicodemigration.pdf

Như bạn có thể thấy trong tiêu đề của nó, bạn sẽ tìm thấy nhiều kinh nghiệm và gợi ý và mẹo. Tôi nghĩ đó là câu trả lời cho câu hỏi của bạn. Sau khi đọc kỹ, bạn chắc chắn sẽ biết phải làm gì tiếp theo.:)

Tìm thấy tại: http://www.danysoft.com/productos/migrar-aplicaciones-a-delphi-xe-o-cbuilder-xe.html

0

Một điểm cần chăm sóc, là việc sử dụng các loại với chuỗi và chức năng kiểm tra VarType cho các chuỗi biến thể: một nhu cầu sử dụng varUString thay vì varString.

Giả sử Avalue là loại biến thể và đã được gán một giá trị chuỗi Unicode, sau đây sẽ không làm việc:

if VarType(AValue) = varString then ... 

và cần phải được thay đổi để

if VarType(AValue) = varUString then ... 
Các vấn đề liên quan