Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];
ВнизПерекодировка Win в Dos Найти похожие ветки
← →
DiHLoS (2002-05-29 18:49) [0]Помогите как перекодировать строку в Win кодировке в Dos кодировку.
Пробовал CharToOEM - выдает ошибку (Access Violation):((
← →
demon-777 (2002-05-29 19:17) [1]Перекодировка текста DOS <-> Widowns <-> Koi8
! Взято из FAQ !
procedure WinToDos;var Src, Str:PChar;begin Src := Memo1.Lines.GetText; //Берем текст из TMemo как тип PChar CharToOem(Src, Str); //API функция для перевода текста Memo2.Lines.Text := StrPas(Str);//Записываем назадend;procedure DosToWin;var Src, Str:PChar;begin Src := Memo1.Lines.GetText; //Берем текст из TMemo как тип PChar OemToChar(Src, Str); //API функция для перевода текста Memo2.Lines.Text := StrPas(Str);//Записываем назадend; var koi8toalt : array [0..127] of char = ( CHR($c4), Chr($b3), Chr($da), Chr($bf), Chr($c0), Chr($d9), Chr($c3), Chr($b4), Chr($c2), Chr($c1), Chr($c5), Chr($df), Chr($dc), Chr($db), Chr($dd), Chr($de), Chr($b0), Chr($b1), Chr($b2), Chr($f4), Chr($fe), Chr($f9), Chr($fb), Chr($f7), Chr($f3), Chr($f2), Chr($ff), Chr($f5), Chr($f8), Chr($fd), Chr($fa), Chr($f6), Chr($cd), Chr($ba), Chr($d5), Chr($f1), Chr($d6), Chr($c9), Chr($b8), Chr($b7), Chr($bb), Chr($d4), Chr($d3), Chr($c8), Chr($be), Chr($bd), Chr($bc), Chr($c6), Chr($c7), Chr($cc), Chr($b5), Chr($f0), Chr($b6), Chr($b9), Chr($d1), Chr($d2), Chr($cb), Chr($cf), Chr($d0), Chr($ca), Chr($d8), Chr($d7), Chr($ce), Chr($fc), Chr($ee), Chr($a0), Chr($a1), Chr($e6), Chr($a4), Chr($a5), Chr($e4), Chr($a3), Chr($e5), Chr($a8), Chr($a9), Chr($aa), Chr($ab), Chr($ac), Chr($ad), Chr($ae), Chr($af), Chr($ef), Chr($e0), Chr($e1), Chr($e2), Chr($e3), Chr($a6), Chr($a2), Chr($ec), Chr($eb), Chr($a7), Chr($e8), Chr($ed), Chr($e9), Chr($e7), Chr($ea), Chr($9e), Chr($80), Chr($81), Chr($96), Chr($84), Chr($85), Chr($94), Chr($83), Chr($95), Chr($88), Chr($89), Chr($8a), Chr($8b), Chr($8c), Chr($8d), Chr($8e), Chr($8f), Chr($9f), Chr($90), Chr($91), Chr($92), Chr($93), Chr($86), Chr($82), Chr($9c), Chr($9b), Chr($87), Chr($98), Chr($9d), Chr($99), Chr($97), Chr($9a));function Koi8toWin(const Data:PChar; DataLen :Integer):PChar;var PCh: PChar; i: Integer;begin PCh:=Data; for i:=1 to DataLen do begin if Ord(Pch^)>127 then Pch^:=koi8toalt[Ord(Pch^)-128]; Inc(PCh); end; PCh:=Data; OemToCharBuff(PCh,PCh,DWORD(DataLen)); Result:=Data;end;
А самому лень было набрать в строке поиск слово "Перекодировка" ?!
← →
demon-777 (2002-05-29 19:18) [2]Опаеьки........ =)
← →
demon-777 (2002-05-29 19:19) [3]Так лучше будет.. =)
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619604&n=19
← →
dihlos (2002-05-30 12:58) [4]2 demon-777
Спасибо, но как раз нужно было без использования апи.
Я сам вчера по бырику написал процедурку:
Function WinToDos(s:string):string;
var
i,cod:integer;
tmp:string;
begin
tmp:="";
for i:=1 to length(s) do
begin
cod:=ord(s[i]);
case cod of
32..127 : tmp:=tmp+chr(cod); //Пробел, цифры, знаки, англ. алфавит
192..239 : tmp:=tmp+chr(cod-64); //А..Я, а..п
240..255 : tmp:=tmp+chr(cod-16); //р..я
168 : tmp:=tmp+chr(240); //Ё
184 : tmp:=tmp+chr(241); //ё
175 : tmp:=tmp+chr(244); //Ї
191 : tmp:=tmp+chr(245); //ї
170 : tmp:=tmp+chr(242); //Є
186 : tmp:=tmp+chr(243); //є
178 : tmp:=tmp+chr(73); //І
179 : tmp:=tmp+chr(105); //і
else tmp:=tmp+chr(95); //для всех остальных - "_"
end; //case
end; //for
WinToDos:=tmp;
end;
Может кому пригодится?
Называется сам создал пробелему и сам ее решил:))))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c