C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Символ в строке  (Прочитано 1880 раз)
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


Символ в строке
« : 11 Апрель 2015, 19:14:25 »

Есть такой код:
Код
String Otvet = "...тут длинная строка из цифр и букв..."
 
Randomize();
//первые 16 символов
for(int i = 1; i 16; i++)
{
BYTE rnd = Random(256);
Otvet[i] = rnd;
//***
}
 

Может ли здесь произойти исключение? Например присвоение какого-то некорректного символа для String?
Например иногда не получается увидеть String Otvet в RichEdit т.к пишет что есть недопустимый символ для RichEdit.
Мне в RichEdit выводит не надо, но надо знать не может ли тут произойти исключение в будущем при таком присвоении
Код
Otvet[i] = rnd;
?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: Символ в строке
« Ответ #1 : 11 Апрель 2015, 22:42:48 »

Вообще проще проверить.
Но всё ж точно скажу что нет.. на уровне, например, 2007 билдера - я там передавал бинарные данные как символы строки. Нет косяков.

Да оно и без проверок понятно - типы приводятся неявно. В байт чрезмерного не запишут.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: Символ в строке
« Ответ #2 : 12 Апрель 2015, 21:47:08 »

Печатные символы начинаются с пробела (32-й символ таблицы Юникода). Последний, который должен поддерживаться ANSI, - это 255-й символ (?). Соответственно, рандомный байт должен быть в диапазоне [32; 255].
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


Re: Символ в строке
« Ответ #3 : 13 Апрель 2015, 15:58:45 »

Цитата: S0mbre от 12 Апрель 2015, 21:47:08
Печатные символы начинаются с пробела (32-й символ таблицы Юникода). Последний, который должен поддерживаться ANSI, - это 255-й символ (?). Соответственно, рандомный байт должен быть в диапазоне [32; 255].

Если не планируется вывод на печать, то исключения все же не будет при моем коде?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: Символ в строке
« Ответ #4 : 13 Апрель 2015, 16:26:02 »

Цитата: POV от 11 Апрель 2015, 22:42:48
Но всё ж точно скажу что нет.. на уровне, например, 2007 билдера - я там передавал бинарные данные как символы строки. Нет косяков.

Даже нули не мешаются, т.к. длина строки не по нулю определяется.
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: Символ в строке
« Ответ #5 : 14 Апрель 2015, 07:47:04 »

исключить символ конца строки, он может и первым выпасть
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #6 : 14 Апрель 2015, 08:31:55 »

Цитата: serg76 от 14 Апрель 2015, 07:47:04
исключить символ конца строки, он может и первым выпасть

Я ж русским языком выше написал что длина строки не по нулю определяется. Где хочешь и сколько хочешь нулей ставь.
Неужели так сложно проверить чем-то типа
Код
      AnsiString s;
for (int i = 0; i 256; i++)
{
s += " ";
s[i+1] = i;
}
 
for (int i = 0; i s.Length(); i++)
{
BYTE temp = s[i+1];
Series1->AddY(temp, "", clGreen);
}
« Последнее редактирование: 14 Апрель 2015, 08:37:06 от POV » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.065 секунд. Запросов: 19.