Считать правильно кириллицу из REG_BINARY

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
OracleLover
Сообщения: 3
Зарегистрирован: 04 июн 2009, 16:49

Всем доброго дня, не могу найти(и сам сделать тоже не домозгую) алгоритм правильного преобразования кириллического символа в нужную кодировку.

То бишь если у меня есть C:\WORK\Аня\diplomka_1, то после считывания данной строки через
Reg.ReadBinaryData( 'Dip', BinData, SizeOf(BinData) );

я получу
C:\WORK\.=О\diplomka_1

в самом ключе так же этот параметр выглядит естественно и надо смотреть на байты данных символов
.=О это 10 3D 4F

Но вот как распознать это дело мне не дано, спасибо за помощь.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Надо просто правильно записывать.
Покажите лучше как записывается это значение.
А также для подобных значений не следует использовать REG_BINARY. Нужно REG_SZ или REG_MULTI_SZ
OracleLover
Сообщения: 3
Зарегистрирован: 04 июн 2009, 16:49

Naeel Maqsudov писал(а):Надо просто правильно записывать.
Покажите лучше как записывается это значение.
А также для подобных значений не следует использовать REG_BINARY. Нужно REG_SZ или REG_MULTI_SZ
Для подоных вещей правильно вообще будет писать в стрковый параметр :) )

А пишут студенты ручками, ну или особо продвинутые с помощью своих инсталляторов.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Ну 10 3D 4F - это никак не кириллица ни в cp866, ни в KOI8, ни в Win1251.
OracleLover
Сообщения: 3
Зарегистрирован: 04 июн 2009, 16:49

Naeel Maqsudov писал(а):Ну 10 3D 4F - это никак не кириллица ни в cp866, ни в KOI8, ни в Win1251.
Я понимаю, но не смог подобрать правильного определения - а назвал кириллицей потому что когда вот это пишешь в параметре REG_BINARY например слово Аня(по-русски естественно) то вместо этого слова появляется .=О что соотвествует вышеназванным байтам, отображающиеся слева.

Как мне в итоге после считывания из строки .=О получить Аня?
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Не знаю подойдет ли, попробуй это:

function DosToWin(St: string): string;
var
Ch: PChar;
begin
Ch := StrAlloc(Length(St) + 1);
OemToAnsi(PChar(St), Ch);
Result := Ch;
StrDispose(Ch)
end;
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить