Delphi: обновление с версии 6 до XE2 — TStringList

Мы должны перейти на XE2 (с Delphi6).

Я собрал много информации об этом, но одна из них мне непонятна.

Мы используем String — что такое AnsiString в XE.

Насколько я знаю, мы должны заменить все (P)Ansi[String/Char] в наших библиотеках, чтобы избежать побочных эффектов преобразования Unicode и чтобы мы могли компилировать наши проекты.

Это нормально, но мы также используем TStringList, и я не нашел никакого класса TAnsiStringList, чтобы просто изменить его... ;-)

Что вы знаете об этом? Это тоже может вызвать проблемы? Или у этого класса есть возможность сохранить строки?

(Хорошо, вроде бы 3 вопроса, но это только один)

Язык программы/ОС венгерский, кодировка WIN-1250, какие-то странные символы, типа Ő и Ű...

Спасибо за каждую информацию, ссылку и т.


person durumdara    schedule 18.12.2012    source источник


Ответы (1)


1) Во-первых, ПОЧЕМУ вам следует использовать AnsiStringList, а не преобразовывать весь ваш проект в TStringList с поддержкой Unicode? Это должно иметь определенные подробные причины, чтобы предложить жизнеспособные альтернативы.

Юникод — это надмножество окон-1250, окон-1251 и тому подобного. Обычно вся ваша строка, специфичная для локали, будет просто без потерь преобразована в Unicode. Это наоборот, преобразование Unicode в AnsiString, которое может привести к потере данных. Явный или неявный (например, сокращение AnsiChar в «if char-var in char-set»)

У вас может быть API с небезопасным типом, как в DLL, где компилятор не может проверить, передаете ли вы PChar или PAnsiChar, но вы в любом случае не должны передавать объекты, такие как TString, в DLL, для этого есть BPL.

Так что скорее всего вам просто не нужен TAnsiStringList

2) вы можете взять TJclAnsiStringList из библиотеки кода джедаев

3) Вы можете использовать сток XE2 TList<AnsiString> типа

person Arioch 'The    schedule 18.12.2012