Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизТекст кодировки DOS в Windows кодировку Найти похожие ветки
← →
VadimS (2003-04-02 10:30) [0]Необходимо текст из одной кодировки преобразовать в другую, подскажите как это сделать.
← →
MBo (2003-04-02 10:31) [1]oemtochar chartooem
← →
Serega (2003-04-02 10:39) [2]CharToOEM, OEMToChar, CharToOEMBuff, OEMToCharBuff.
1. if S <> "" then CharToOem(PChar(S),PChar(S));
2. CharToOem(Pointer(S),Pointer(S));
Примечания:
1. Не стоит вызывать эту функцию если S = "" будет ошибка, второй вариан не имеет этой ошибки.
2. Заметьте однако, что эти функции не умеют делать таких, вещей, как koi8-r в DOS и т. п.
3. Не стоит использовать эту функцию также для преобрахования из русской кодировки DOS в русскую Windows и обратно, так как это не преобразование по русскому алфавиту а перекодирова именно из DOS в Windows, то есть на основе текущей локализации системы, если нужна абсоютная гарантия, то следует вопользоваться перекодировкой по таблице, рекомендуется по полной таблице из всех 256 символов, на моей странице ( http://podgoretsky.com) есть универсальная функция перекодировки (CharCvt) с набором некоторых основных таблицю
Кроме того, высылаю еще три процедурки, которыми пользуюсь.
function DOS_WinCode(strtok : string): string;
var
ch :integer;
kod : char;
i :integer;
strout :string;
begin
strout:="";
for i:=1 to Length(strtok)do
begin
ch:=ord(strtok[i]);
case ch of
128..175 : kod:=chr(ch+64);
224..239 : kod:=chr(ch+16);
242 : kod:=chr(165);
243 : kod:=chr(180);
244 : kod:=chr(170);
245 : kod:=chr(186);
246 : kod:=chr(178);
247 : kod:=chr(179);
248 : kod:=chr(175);
249 : kod:=chr(191);
176..182 : kod:=chr(124);
185..186 : kod:=chr(124);
193..195 : kod:=chr(124);
197..199 : kod:=chr(124);
202..204 : kod:=chr(124);
206..210 : kod:=chr(124);
215..216 : kod:=chr(124);
219 : kod:=chr(124);
221..222 : kod:=chr(124);
183..184 : kod:=chr(45);
187..192 : kod:=chr(45);
196 : kod:=chr(45);
200..201 : kod:=chr(45);
205 : kod:=chr(45);
211..214 : kod:=chr(45);
217..218 : kod:=chr(45);
220 : kod:=chr(45);
223 : kod:=chr(45);
252 : kod:=chr(78);
else
kod:=chr(ch);
end;
strout:=strout+kod;
end;
result :=strout;
end;
{..................................................}
function Win_DOSCode(strtok : string): string;
var
ch :integer;
kod : char;
i :integer;
strout :string;
begin
strout:="";
for i:=1 to Length(strtok)do
begin
ch:=ord(strtok[i]);
case ch of
192..239 : kod:=chr(ch-64);
240..255 : kod:=chr(ch-16);
165 : kod:=chr(242);
180 : kod:=chr(243);
170 : kod:=chr(244);
186 : kod:=chr(245);
178 : kod:=chr(246);
179 : kod:=chr(247);
175 : kod:=chr(248);
191 : kod:=chr(249);
else
kod:=chr(ch);
end;
strout:=strout+kod;
end;
result :=strout;
end;
function CWinCode(cc : char): char;
var
ch :integer;
kod : char;
begin
ch:=ord(cc);
case ch of
192..239 : kod:=chr(ch-64);
240..255 : kod:=chr(ch-16);
165 : kod:=chr(242);
180 : kod:=chr(243);
170 : kod:=chr(244);
186 : kod:=chr(245);
178 : kod:=chr(246);
179 : kod:=chr(247);
175 : kod:=chr(248);
191 : kod:=chr(249);
else
kod:=chr(ch);
end;
result :=kod;
end;
← →
VadimS (2003-04-02 10:43) [3]Встречный вопрос, как строку типа String преобразовать в PChar, а потом обратно.
Может oemtochar сразу может преобразовать переменную типа String?
← →
Nic_B (2003-04-02 10:58) [4]Может это чем-то поможет
function TMainForm.StrToOem(const AnsiStr: string): string;
begin
SetLength(Result, Length(AnsiStr));
if Length(Result) > 0 then
oemtochar (PChar(AnsiStr), PChar(Result));
// CharToOem(PChar(AnsiStr), PChar(Result));
// В зависимости из чего во что конвертировать
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c