На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> ASCII коды русских букв
    Как вывести символ с кодом>127 в StringGrid к примеру. Имеем изначально собственно сам ASCII код в целочисленной переменной.
      В ASCII русских букв нет. Если речь об ANSI-кодировке, то просто приведением к типу char
      ExpandedWrap disabled
        int i = 255;
        StringGrid1->Cells[1][1] = (char)i;
        Я знаю только что расширенная ASCII может иметь русский алфавит в верхней половине таблицы.У меня конечно руки возможно не оттуда растут. Но при стандартных параметрах грида(default_charset,ms sans serif), при подобных преобразованиях если код>127 выводится чушь. Могу предположить что это по причине того что char имеет диапазон значений -128..127 а тут получается переполнение. Но unsigned char (0..255) ситуацию не спасает выводит полученный код именно числом.
        Сообщение отредактировано: Driver -
          показывай как выводишь.
            Ну например предложенным способом пытался ранее.
            ExpandedWrap disabled
              for (int i=1; i < 256; i++) {
              StringGrid1->Cells[0][i]=(char)i;
              }
              Пиши так:

              ExpandedWrap disabled
                char a;
                for (int i=0; i < 256; i++) {
                        a = i;
                        StringGrid1->Cells[0][i]=i;
                        StringGrid1->Cells[1][i]=a;
                }


              Проблем не будет!
                Цитата Driver @
                Ну например предложенным способом пытался ранее.

                Первые 32 символа - служебные, их выводить я бы не стал. Алсо, как уже сказал Kh_Sergey выводить надо слегка сложнее.
                Попробуй

                ExpandedWrap disabled
                  for (int i = 32; i < 256; i++) {
                      StringGrid1->Cells[0][i] = i;
                      StringGrid1->Cells[1][i] = AnsiString(&static_cast<char>(i),1);
                  }
                  Kh_Sergey
                  Проблемы были и будут))

                  Мяут
                  Да я просто для примера цикл такой привел. Я вывожу определенные символы для кода гилберта-мура.

                  Вот к такому решению пришел
                  ExpandedWrap disabled
                    ...
                        StringGrid1->Cells[0][i] = AnsiString((char)i);

                  Всем спасибо за советы. Если кто-то может прокомментировать ситуацию почему нужно делать именно так, а не иначе был бы рад.
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0284 ]   [ 15 queries used ]   [ Generated: 8.07.25, 20:08 GMT ]