Delphi Ansistrings
У меня есть случай, я собираюсь перейти на Delphi 2011 XE с Delphi 7, и, к моему удивлению, многие компоненты будут иметь проблемы из-за рассогласования, в delphi xe они выглядят как символы японского и китайского языков, теперь единица, которую я использую, это разъем PCSC и, кажется, прекращено / отказались от первоначального разработчика.
в основном то, что я хочу, - это простой способ снова читать строки с минимальным изменением исходного кода, насколько это возможно..
также, если есть какие-нибудь хорошие учебники о том, как сделать компоненты, готовые к выпуску в 2009 году, и более новые, мне тоже помогут
2 ответа
@Plastkort, Delphi >= 2009 прекрасно умеет читать и обрабатывать AnsiString. Вы получаете только бессмысленные символы, если вы каким-то образом жестко приводите данные ANSI в Unicode, возможно, путем жесткого указания указателя на PChar.
Если бы мне пришлось конвертировать чей-то код в Unicode, я бы начал с поиска PChar, Char и String и специально искал места, где другие типы жестко приводятся к этим типам. Это потому, что эти типы изменили значение: в не-Unicode delphi CHAR был 1 байт, теперь он 2 байта.
Само преобразование не обязательно сложно, вам просто нужно понять проблему, с которой вы сталкиваетесь, и вы должны хорошо понимать код, который вы конвертируете. И это большая работа, особенно когда дело касается кода, который делает "умные вещи со строками".
Большое изменение в Delphi (думаю, до Delphi 2009) - это псевдонимы строковых типов; string, Char, PChar и т. д., к которым в 2009 году относились строковые типы ANSI, теперь все типы WideChar.
так
Type | Delphi 6,7 | Delphi 2009, XE
-------+------------+----------------
string | AnsiString | UnicodeString
char | AnsiChar | WideChar
pchar | PAnsiChar | PWideChar
Самый простой способ перехода с Ansi Delphi на Unicode Delphi - это глобальный поиск и замена псевдонимов строковых типов, которые заменяют их явными 8-битными эквивалентами ANSI (то есть заменяют всю строку на AnsiString, PChar на PAnsiChar и т. Д.)
Это должно дать вам 90% пути.
Обновление После прочтения комментариев к моему ответу и статье, на которую ссылается @OD, я думаю, что совет откусить пулю и перейти на Unicode - более разумный вариант.