Показать сообщение отдельно
Старый 23.10.2004, 11:00   #3  
Miktel is offline
Miktel
Участник
 
17 / 10 (1) +
Регистрация: 13.07.2004
Адрес: Дома
Str 500 convertWinToDos(Str 500 _winStr)
{
Int strLength;
Int i;
str 500 dosString;
Int charCode;

;

// info("paramStr = " + _winStr);
strLength = strLen(_winStr);
// info("length = " + int2str(strLength));
dosString = "";
for (i=1;i<=strLength;i++)
{
charCode = char2Num(subStr(_winStr,i,1),1);
info(int2str(i)+ " - ый символ строки " + subStr(_winStr,i,1) + " его код = " + int2str(charCode));
if (charCode >= 192 && charCode <= 223)
{
dosString = dosString + num2Char(128 + charCode - 192);
continue;

}
// в DOS - ой кодировке между символами "п" и "р" другие символы (код "п"=175, а код "р"=224)
if (charCode >= 224 && charCode <= 239) //симолы от "а" до "п"
{
dosString = dosString + num2Char(160 + charCode - 224);
continue;
}
if (charCode >= 240 && charCode <= 255) //симолы от "р" до "я"
{
dosString = dosString + num2Char(224 + charCode - 240);
continue;
}

if (charCode == 184) // символ "ё"
{
dosString += num2Char(241);
continue;
}
if (charcode == 168) // символ "Ё"
{
dosString += num2Char(240);
continue;
}
if (charCode == 185) // символ "№"
{
// заменяем символ "№" (номер) на N
// так как символа № (номер) нет в DOS - ой раскладке
dosString += num2Char(78);
continue;
}
dosString += subStr(_winStr,i,1);
// у других симолов коды в обеих раскладках одинаковые
//(например, у Латинских букв, символов ,.?/*-+=(){}[]'"!@#$^^; и т.д.)
}
return dosString;
}

Вызывай этот метод для конвертации. Удачи!