Скажите пожалуйста , где в этом коде ошибка…
Спойлер
// Преобразование строки из кодировки UTF-8 в кодировку CP866: // Возвращаемое значение: строка в кодировке CP866.
char* iarduino_OLED::_codingCP866(char* StrIn){ // Параметр: строка в кодировке UTF-8.
char* StrOut=StrIn; // Определяем строку для вывода результата.
uint8_t numIn = 0, // Определяем переменную хранящую номер символа в строке StrIn.
numOut = 0, // Определяем переменную хранящую номер символа в строке StrOut.
charThis = StrIn[0], // Определяем переменную хранящую код текущего символа в строке StrIn.
charNext = StrIn[1]; // Определяем переменную хранящую код следующего символа в строке StrIn.
switch(codingName){ // Тип кодировки строки StrIn.
// Преобразуем текст из кодировки UTF-8: //
case TXT_UTF8: //
while (charThis> 0 &&numIn <0xFF ){ // Если код текущего символа строки StrIn больше 0 и № текушего символа строки StrIn меньше 255, то ...
if(charThis==0xD0&&charNext>=0x90&&charNext<=0xBF){StrOut[numOut]=charNext-0x10; numIn++;}else // Если код текущего символа равен 208, а за ним следует символ с кодом 144...191, значит это буква «А»...«п» требующая преобразования к коду 128...175
if(charThis==0xD0&&charNext==0x81 ){StrOut[numOut]= 0xF0; numIn++;}else // Если код текущего символа равен 208, а за ним следует символ с кодом 129 , значит это буква «Ё» требующая преобразования к коду 240
if(charThis==0xD1&&charNext>=0x80&&charNext<=0x8F){StrOut[numOut]=charNext+0x60; numIn++;}else // Если код текущего символа равен 209, а за ним следует символ с кодом 128...143, значит это буква «р»...«я» требующая преобразования к коду 224...239
if(charThis==0xD1&&charNext==0x91 ){StrOut[numOut]= 0xF1; numIn++;}else // Если код текущего символа равен 209, а за ним следует символ с кодом 145 , значит это буква «ё» требующая преобразования к коду 241
{StrOut[numOut]=charThis;} numIn++; // Иначе не меняем символ.
numOut++; charThis=StrIn[numIn]; charNext=StrIn[numIn+1]; // Переходим к следующему символу.
} StrOut[numOut]='\0'; // Добавляем символ конца строки и возвращаем строку StrOut.
break; //
// Преобразуем текст из кодировки WINDOWS-1251: //
case TXT_WIN1251: //
while (charThis> 0 &&numIn <0xFF){ // Если код текущего символа строки StrIn больше 0 и № текушего символа строки StrIn меньше 255, то ...
if(charThis>=0xC0&&charThis<=0xEF){StrOut[numOut]=charThis-0x40;}else // Если код текущего символа равен 192...239, значит это буква «А»...«п» требующая преобразования к коду 128...175
if(charThis>=0xF0&&charThis<=0xFF){StrOut[numOut]=charThis-0x10;}else // Если код текущего символа равен 240...255, значит это буква «р»...«я» требующая преобразования к коду 224...239
if(charThis==0xA8 ){StrOut[numOut]= 0xF0;}else // Если код текущего символа равен 168 , значит это буква «Ё» требующая преобразования к коду 240
if(charThis==0xB8 ){StrOut[numOut]= 0xF1;}else // Если код текущего символа равен 184 , значит это буква «ё» требующая преобразования к коду 241
{StrOut[numOut]=charThis;} // Иначе не меняем символ.
numIn++; numOut++; charThis=StrIn[numIn]; // Переходим к следующему символу.
} StrOut[numOut]='\0'; // Добавляем символ конца строки и возвращаем строку StrOut.
break; //
} return StrOut; // Возвращаем строку StrOut.
}
ошибка в этом куске.
c:\Users\User\Documents\Arduino\libraries\iarduino_OLED-1.2.0\src\iarduino_OLED.cpp: In member function ‘char* iarduino_OLED::_codingCP866(char*)’:
c:\Users\User\Documents\Arduino\libraries\iarduino_OLED-1.2.0\src\iarduino_OLED.cpp:312:34: warning: comparison is always true due to limited range of data type [-Wtype-limits]
if(charThis>=0xF0&&charThis<=0xFF){StrOut[numOut]=charThis-0x10;}else // Если код текущего символа равен 240…255, значит это буква «р»…«я» требующая преобразования к коду 224…239
Ошибка указывает на жирный фрагмент (charThis жирным шрифтом)
Строка 312 в ошибке - это строка 24 здесь в коде на сайте!
ВРоде все впорядке… charThis-байт от0 до 255. в условии если меньше или равно 255.
нигде вроде за пределы не вылазиет…
Чего я тут не смог увидить ,?
Спасибо…https://github.com/tremaru/iarduino_OLED/archive/1.2.0.zip