2009-10-21 18 views
16

Mamy dużą aplikację komercyjną, którą chcemy przekonwertować z Delphi 6 na 2010. Około 10 zestawów komponentów stron trzecich, wszystkie z kodem źródłowym ... Słyszałem ostrzeżenia o Unicode z 2010 r. - Czy ktoś ma doświadczenie i lub sugestie?Konwersja Delphi Kody Unicode

Odpowiedz

1

Jestem ostatnio w tej samej sytuacji. zazwyczaj musisz zwracać uwagę na "krawędzie" aplikacji. Pliki INI, pliki I/O, pliki logów itp. Wygrywają wywołania API z delphi, ponieważ zamiast tego mają teraz połączenia API Unicode. sprawdź każdy zestaw komponentów innych producentów, aby upewnić się, że są one przynajmniej gotowe na Delphi 2009 ... jeszcze lepiej. Nawet moje wykorzystanie baz danych po prostu nie było problemem ... prawie wszystko działało od razu. to po prostu nie była wielka sprawa. wszystko, co zależy od wielkości postaci, powinno zostać sprawdzone.

Naprawdę przejściem najbardziej niepokojącym jest 2007_or_earlier -> 2009_or_later.

Istnieje wiele dyskusji/wpisów na blogu na ten temat. możesz czytać, czytać, czytać ... lub możesz zacząć & Zobacz, co się stanie. (Zrobiłem jedne i drugie). Jestem pewien, że problemy z przepełnieniem stosu omawiają twoje pytanie. Nie zamierzam podawać dokładnego opisu tego, co może się zdarzyć.

Po prostu nie jest tak straszny, jak się wydaje.

18
+3

nie zapomnij Sesja Unicode, którą dałem na CodeRage4, zawiera jeszcze więcej materiałów referencyjnych: http://wiert.wordpress.com/2009/09/11/coderage-4-session-using-unicode-and-other-encodings-in-your- programy-czat-i-qa-transkrypty/ –

+0

@Jeroen, Świetne wideo, dodane;) – RRUZ

3

Znajdziesz kilka użytecznych odpowiedzi w tych kwestiach 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

Ponadto, co warto, kupiłem Marco Cantu's Delphi 2009 Handbook. To było wszystko, czego potrzebowałem, aby stosunkowo łagodnie przejść od Delphi 4 do Delphi 2009 w zaledwie kilka tygodni.

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

robię, jednak zaleca się zapewnienie 3rd Party pakiety mają Delphi 2009 uaktualnienie, czy może masz jakieś realne trudności. Konwertowanie własnego kodu to jedno. Konwersja cudzych jest inna.

Używam dwóch pakietów zewnętrznych, zarówno z kodem źródłowym. Oba miały dostępne ulepszenia, a twórca jednego z nich napisał, że miał problemy z uaktualnieniem swojego bardzo złożonego komponentu do Unicode of Delphi 2009. Zajęło mu to kilka miesięcy, ale ukończył go. W rezultacie miałem niewielki problem z wdrożeniem jego komponentu, kiedy dokonałem aktualizacji.

1

Około 10 zestawów komponentów stron trzecich, wszystkie z kodem źródłowym.

Jedną z rzeczy, które chciałbym dodać, jest to, że komponent nie obsługuje Delphi 2009/2010, nie próbuj ulepszać go poprzez hakowanie kodu.

obserwuję to co napisałem na How do the new string types work in Delphi 2009/2010?:

Zobacz Delphi and Unicode, biały papier napisany przez Marco Cantù i myślę The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), napisany przez Joela.

Jedna pułapka jest to, że domyślna Win32 wywołanie API zostało odwzorowane używać W (szeroki ciąg) wersję zamiast (ANSI) wersja A, na przykład ShellExecuteA Jeśli kod robi trudne kod wskaźnika zakładając wewnętrzny układ AnsiString , pęknie. Zastąpienie jest zastąpienie PChar z PAnsiChar, Char z AnsiChar, z AnsiString i dołączyć A na końcu wywołania Win32 API dla tej części kodu. Po tym, jak kod faktycznie się kompiluje i działa normalnie, możesz zmienić kod, aby użyć string (UnicodeString).

1

Muszę dodać ten artykuł z Carey Jensen do innych wymienionych. Jest on oznaczony jako "Delphi Migracja Unicode dla zwykłych śmiertelników: Historie i porady z pierwszych linii" (w języku angielskim). http://www.danysoft.com/free/delphiunicodemigration.pdf

Jak widać w tytule, znajdziesz wiele doświadczeń i wskazówek. Myślę, że jest to odpowiedź na twoje pytanie. Po uważnym przeczytaniu na pewno będziesz wiedział, co dalej robić.:)

Znaleziono w: http://www.danysoft.com/productos/migrar-aplicaciones-a-delphi-xe-o-cbuilder-xe.html

0

inny punkt zająć, jest wykorzystanie typów wariant z łańcuchów i testowania funkcji VarType dla strun: trzeba użyć varUString zamiast varString.

Zakładając Avalue jest typu Variant i jest przypisana wartość ciąg Unicode, co następuje nie zadziała:

if VarType(AValue) = varString then ... 

i musi zostać zmieniona na

if VarType(AValue) = varUString then ... 
Powiązane problemy