2012-03-20 12 views
11

Czy jest jakiś sposób na zrobienie tego?Jak wyłączyć kodowanie Unicode w Delphi xe2

Obecnie używam 2007 i zamierzam uaktualnić, ale jest to bardzo frustrujące, próbując uzyskać tę nową wersję, aby cokolwiek zrobić.

Nowe zachowanie char, stringów i Pchar w xe2 zabija praktycznie każdą aplikację i komponent trzeciej strony, które próbowałem na nim.

Czy istnieje opcja kompilatora zapewniająca zgodność z D2007. ?

+1

Delphi ma typy AnsiChar, AnsiString i PAnsiChar w celu obsługi starej funkcjonalności. –

+1

A także jednostkę AnsiStrings. –

+0

Być może zadajesz najczęściej zadawane pytania dotyczące przejścia w standardzie Unicode. Odpowiedź brzmi: "Nie jest tak źle, po prostu przejdź przez to i przenieś swój kod". Prawie każdy komponent komercyjny i open source został przeniesiony 2-3 lata temu. Chodź w wodzie w porządku. –

Odpowiedz

5

Jeśli był "przełącznik Ansi" dla Delphi 2009/2010/XE/XE2 (wersje unicode), po prostu wymieniałbyś problem, który masz teraz, z dużo gorszymi problemami.

Z tego powodu nie może być przełącznika. Pomysł ten został dokładnie omówiony, zdaję sobie sprawę z pierwszych rozmów z osobami, które podjęły decyzję, a decyzja o złamaniu kodu nie została podjęta bez należytej staranności. Po prostu nie było innego wyjścia. Aby uczynić Delphi prawdziwie Unicode, konieczne było pseudo String = UnicodeString.

Dlatego trzeba zmienić wszystkie deklaracje String do AnsiString i Char do AnsiChar jeśli chcesz mieć jednobajtowe non-unicode rodzaje znaków i ciąg w kodzie aplikacji. W większości kodu, a w większości miejsc nie jest to konieczne. Ale tam, gdzie wyraźnie potrzebujesz przetwarzania wielkości bajtów, takich jak protokoły binarne przez RS232 i RS485, lub formaty plików binarnych (EDA itp.), Musisz zmienić swój kod.

Jeśli nie chcesz samodzielnie przesyłać kodu, zapłać komuś, aby to zrobił. Przeniosłem na siebie ogromną bibliotekę komponentów naukowych i aplikacji, a przetestowanie i znalezienie wszystkich błędów zajęło mi kilka tygodni. Później miałem rozsądną, nowoczesną bazę kodów, która nie pękła ponownie od 2009 roku, kiedy dokonałem aktualizacji.

Kiedy dojdziesz do podziału XE/XE2, możesz napotkać trochę więcej bólu związanego z założeniami twojego kodu, że typy wskaźników mają ten sam rozmiar co liczba całkowita lub kardynał, co nie jest już prawdą w Win64. Znowu faceci Delphi nie mają ochoty łamać kodu, po prostu podążają za zdrowymi praktykami inżynierskimi, w tym przypadku Win64 dyktuje pewne rzeczy.

Dlaczego nie zmieniono każdej właściwości sterującej VCL na USTRING zamiast ciągu? Dlaczego nie spowodowały one, że każda funkcja RTL pobiera zarówno USTRING, jak i STRING i zapewnia przeciążenia?

Ponieważ normatywne tworzenie Delphi jest teraz czysto Unicode. USTRING jest i będzie specjalnym przypadkiem. String jest natywnym (normatywnym) typem łańcucha, i tak naprawdę jest on również znany jako UnicodeString.

Tak się składa, że ​​już używasz aliasu typu. Łańcuchy w delphi 1.0 były ograniczone do 255 znaków. Kiedy wprowadzili Delphi 2.0 i długi typ łańcucha, zwany wewnętrznie AnsiString, ujednolicili istniejący wspólny typ String jako String=AnsiString. Kiedy dotarliśmy do Unicode, każdy komponent VCL i każda metoda VCL, która pobiera ciąg nadal pobiera ciąg znaków. Jednak String jest teraz String=UnicodeString.

Delphi 7 ma już na przykład WideString. Nie potrzebujemy w połowie drogi do unicode. Niezależnie od tego, czy zdajesz sobie z tego sprawę, czy nie, cały świat oprogramowania oczekuje, że typy łańcuchów będą unicode. Delphi jest częścią globalnego zjawiska. Internet to unikod. Twój system operacyjny Windows 7 to czysty natywny kod.

+1

Czytanie białej księgi embaracadero unicode przekonało mnie, że migracja jest zbyt przerażająca, by poradzić sobie w tej chwili. Sądzę, że utknąłem z D2007 w najbliższej przyszłości. –

+1

Nie jest tak źle. –

+0

Twoja równoległość z Windows 7 jest dość ironiczna, ponieważ musieliśmy wyrzucić 7 z powodu niekompatybilności z kilkoma naszymi kluczowymi łańcuchami narzędzi. Korzystamy teraz tylko z XP i xp64, co jest trochę smutne, ponieważ udowadnia, że ​​Microsoft miał bezbolesną ścieżkę migracji do 64 bitów, po prostu nie chcieli go promować. –

Powiązane problemy