Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

Текст кодировки 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
14-44445
VEG
2003-03-29 23:32
2003.04.14
Мысли вслух...


4-44523
Dr. Web
2003-02-10 15:31
2003.04.14
Как програмно запустить другую программу под другим пользером


1-44210
xfrost
2003-04-01 17:34
2003.04.14
Работа с ClipBoard


3-44075
calm
2003-03-24 15:43
2003.04.14
Как программно проверить, запущен ли сервер IB (Firebird etc)?


3-44014
gal
2003-03-24 13:59
2003.04.14
БД