Программа Delphi 7 (в своей части VCL) может без проблем обрабатывать русские, китайские или корейские символы.
Если системный язык Windows установлен правильно, кодировка будет соответствоватьсоответствующая кодировка и имена файлов будут иметь символы Unicode, доступные в этой кодировке.Фактически, string=AnsiString
по умолчанию преобразуется в Unicode, когда VCL вызывает API-интерфейсы Windows (все вызовы ....A()
будут выполнять преобразование, а затем вызывать ....W()
версию).
Вы можете принудительно установить по умолчанию.кодовая страница (та, которая выберет кодировку для использования) путем вызова кода , например, :
if GetThreadLocale<>LCID then // force locale settings if different
if SetThreadLocale(LCID) then
GetFormatSettings; // resets all locale-specific variables
В этом случае TFileName
(= AnsiString
) в текущей системной кодировке Windows будет преобразована в соответствующие символы Unicode, и вы сможете использовать ее в своем приложении Delphi 7.
Что вы не можете сделать со стандартным VCL AnsiStringиспользуйте его для непосредственного смешивания кодировок , как вы можете с Delphi 2009, благодаря новой string = UnicodeString
стандартной парадигме.
PS:
Поскольку CharSet включает только символы # 128 .. # 255 (т.е. все с установленным битом 7), если вы используете только символы # 0 .. # 127, ваша строка будет согласованной независимо от текущей настройки charset / кодовой страницы.Если вы используете только английские символы и цифры, например, ваш путь всегда будет работать, независимо от кодировки / кодовой страницы.Но если вы используете не английские символы, путь будет работать только в том случае, если правильно задана кодовая страница / кодовая страница, что относится к пути, используемому конечным пользователем (например, TOpenDialog
во время выполнения).