Проблема с преобразованием типов
От: b00tanik  
Дата: 13.05.09 18:40
Оценка:
Здравствуйте! Среда Программирования Borland C++ 6.0, OS — Win7(En)

Для чтения одного байта, задаваемого в шестнадцатеричном формате использую следующий код:

Код:

char GetByte(AnsiString what= "#d"){
      char Byte=0;
      AnsiString InpD="",
                Caption="Entering "+what, Text="Enter "+what,
                 NotValid="Not valid "+what+" value";
      bool CorrFlag=false;
      int val=0;
      do{
        CorrFlag=true;
        InpD=InputBox(Caption.c_str(), Text.c_str(), "0x00");
        sscanf(InpD.c_str(),"0x%x", &val);
        if(val<0 || val>0xFF){
                Application->MessageBoxA(NotValid.c_str(), "Invalid", MB_OK | MB_ICONERROR);
                CorrFlag=false;
        } else {
                Byte = val; // <----- ВОТ ЗДЕСЬ ПРОИСХОДИТ!!!!
        }
      } while (InpD.Length()<=0 || !CorrFlag);
      return Byte;
}



В той строчке, что прокомментированна "<----- ВОТ ЗДЕСЬ ПРОИСХОДИТ!!!!" случается странная вещь — маленький байтик из 0x00 превращается в 0xFFFFFF<правильное значение байта>.

Чтобы совсем было инетересно, такое происходит только если вводимое значение больше 0xF

Пробовал использовать вместо char AnsiString, делал прямое преобразование типов через (char) но без толку.

На форуме не искал, потому что не знаю даже какую строку поиска использовать.

Есть идеи как это вылечить?
типы странности
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.