Единственный способ StringCodePage()
вернуть 0 - это если вы передаете пустое значение AnsiString
, возвращая, таким образом, его сходство с кодовой страницей во время компиляции, или передаете непустое значение AnsiString
, которому назначена кодовая страница его полезная нагрузка. Delphi использует WideString
для строк COM, и StringCodePage()
не вернет 0 для любого типа строки, кроме простого AnsiString
. В D2009 RTL не очень хорошо справлялся с сохранением фактической кодовой страницы времени выполнения ОС в AnsiString
полезных нагрузках, поэтому они обычно содержали сходство кодовой страницы времени компиляции, равное 0. Это функционально в отношении преобразования строк, но это не очень явно. Это было исправлено в более поздних версиях Delphi, поэтому AnsiString
полезные нагрузки теперь содержат фактическую кодовую страницу ОС, которая определяется во время выполнения.