Zastanawiam się jaki był cel tej zmiany, że od wersji Delphi 2009 PChar=PWideChar, a nie jak wcześniej PChar=PAnsiChar. Sprawia to dużo problemów przy przenoszeniu kodu napisanego w starszych wersjach Delphi, a chciałbym (i myślę że nie tylko ja) się dowiedzieć czym się kierowali programiści Delphi wprowadzając tą zmianę?
Z Wikipedii:
http://en.wikipedia.org/wiki/Wide_character napisał(a)
A wide character is a computer character datatype that generally has a size greater than the traditional 8-bit character. The increased datatype size allows for the use of larger coded character sets.
Czyli wide
obsługuje więcej znaków (właściwie więcej zestawów znaków).
Tym, że ANSI to przeżytek i domyślne to ono było, ale w Windows 98. Microsoft od dawna zaleca, żeby aplikacje pracowały wewnętrznie na napisach w kodowaniu UTF-16.
Chcieli być bardziej zgodni z systemem operacyjnym Windows, w wypadku wielojęzycznych programów Unicode jest łatwiejszy w obsłudze niż ANSI, problem w tym, że nie samym Windows człowiek żyje.
Najnowsze Delphi umożliwia pisanie programów pod różne systemy, mam nadzieje, że wkrótce zacznie im doskwierać UTF-16 (jako najgorsze możliwe kodowanie Unicode) i dodadzą jakąś opcję do tego.
Dla mnie to była mało strategiczna zagrywka. Równie dobrze mogli zamienić swoje źródła (VCL) z typów domyślnych na UTF-16, a programistom dać wolną rękę.
Zamiast tego postanowili zmienić typy domyślne. W dużym oprogramowaniu takich zagrywek się nie robi.
Np. w Linux domyślnym kodowaniem AFAIK jest UTF-8, które jest zgodne z kodowaniem ANSI i praktycznie nie trzeba w ogóle zmieniać oprogramowania żeby to kodowanie stosować - po prostu jest to kolejna strona kodowa.
Np. w Linux domyślnym kodowaniem AFAIK jest UTF-8, które jest zgodne z kodowaniem ANSI i praktycznie nie trzeba w ogóle zmieniać oprogramowania żeby to kodowanie stosować - po prostu jest to kolejna strona kodowa.
Z wyjątkiem sekwencji BOM, która jest częścią standardu, a przez programy linuksowe obsługiwana źle.
Tak więc obsługa UTF-8 pod Linuksem jest „pod warunkiem że w pliku nie ma BOM”
zacznie im doskwierać UTF-16 (jako najgorsze możliwe kodowanie Unicode)
możesz rozwinąć, dlaczego miałoby?