Модератор: Модераторы
DYUMON писал(а):что лежит в paramname ?
const
ParamName = {$ifdef windows}'locale'{$else}'llocale'{$endif};
wavebvg писал(а):Можно предположить, что строка хранится в UnicodeString или чем-то подобном.
А умная среда разработки Вам помогает и не заставляет думать о кодировках.
Попробуйте SetCodePage над строчкой перед сравнением.
r1:=ac1; // ac1 65001 -> r1 65001
r1:=ac1+ac3; // ac1 65001 ac3 1251 -> r1 1251 при начальной инициализации
r1:=ac1+ac3; // r1 65001 ac1 65001 ac3 1251 -> r1 65001 при повторном присвоении
wavebvg писал(а):Можно предположить, что строка хранится в UnicodeString
Loc := Lang.Values['locale']
lordgray писал(а):Значение исходной строки t := 'locale=409', копируется первых 7 символов, и получается 'loca' ! Это как?
bormant писал(а):Если у вас перед 'locale=409' был BOM, то он в UTF-8 занимает как раз 3 байта...
lordgray писал(а):Он определяет BOM, и обрезает его
SSerge писал(а):lordgray писал(а):Он определяет BOM, и обрезает его
Вы уверены? Я как-то в целях эксперимента с удивлением выяснил, что BOM прекрасно приписывается к строкам при чтении файлов
var Loader: TFileStream;
Lang: TStringList;
Loc: String;
begin
Lang := TStringList.Create;
//Lang.LoadFromFile(aSt);
Loader := TFileStream.Create(aSt, fmOpenRead);
Loader.Position := 3;//skip BOM
Lang.LoadFromStream(Loader);
Loc := Lang.Value['locale'];
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11