** sim |
Отправлено: 24.11.2003, 21:54 |
|
Не зарегистрирован
|
AnsiString b,a="123456789";
b=a[2]+a[3]+a[4];
Почему при выполнении b не равно "234", а равно чему-то другому? |
|
Георгий |
Отправлено: 24.11.2003, 22:56 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
а так:
CODE | AnsiString b,a="123456789";
b=AnsiString(a[2])+AnsiString(a[3])+AnsiString(a[4]); |
QUOTE | Почему при выполнении b не равно "234", а равно чему-то другому? |
a[2] — берётся символ из строки a
a[2]+a[3] — складывается коды символов из строки a
b=a[2]+a[3]+a[4]; — сумма кодов символов (число) преобразуется в строку
На вопрос "почему" я ответил? |
|
** sim |
Отправлено: 24.11.2003, 23:30 |
|
Не зарегистрирован
|
Спасибо. Я понял.
приведение к типу и в скобках указываем что приводим. |
|
Георгий |
Отправлено: 25.11.2003, 00:23 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
не совсем — приведение к типу это так:
а здесь я использовал явный вызов конструктора:
с созданием временного экземпляра класса. |
|
SmAlex |
Отправлено: 01.12.2005, 17:27 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
А вот у меня почему то следующий код
int KolStrok, NN, Povt;
AnsiString S1,S2;
// ---------------------
KolStrok=RichEdit1->Lines->Count;
for (NN=1; NN
{
S1=RichEdit1->Lines->Strings[NN-1];
S2=Label1->Caption;
if (AnsiString(S1[0])==AnsiStringS2[0])) Povt=2;
при компиляции говорит, что в последнем операторе синтаксическая ошибка...
если вместо него ставлю
if (S1[0])==S2[0])) Povt=2;
то же самое.... Нельзя сравнивать?
|
|
SmAlex |
Отправлено: 01.12.2005, 17:30 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
То есть
if (S1[0]==S2[0]) Povt=2; |
|
Guest |
Отправлено: 01.12.2005, 17:50 |
|
Не зарегистрирован
|
У AnsiString индекс ведет счет от 1 |
|
SmAlex |
Отправлено: 01.12.2005, 17:56 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Понял, спасибо! |
|
SmAlex |
Отправлено: 02.12.2005, 00:06 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
А вот так — при компиляции не выдаёт ошибку , а при выполнении = ругается...
CODE |
int KolStrok, NN, Povt;
AnsiString S1,S2;
// ---------------------
KolStrok=RichEdit1->Lines->Count;
for (NN=1; NN <KolStrok; N++)
{
S1=RichEdit1->Lines->Strings[NN-1];
S2=Label1->Caption;
if (AnsiString(S1[1])==AnsiStringS2([1])) Povt=2;
} |
Отредактировано Георгий — 02/12/2005, 03:07 |
|
Grigoriy |
Отправлено: 02.12.2005, 07:06 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
QUOTE (SmAlex @ 02/12/2005, 00:06) | А вот так — при компиляции не выдаёт ошибку , а при выполнении = ругается...
CODE |
int KolStrok, NN, Povt;
AnsiString S1,S2;
// ---------------------
KolStrok=RichEdit1->Lines->Count;
for (NN=1; NN <KolStrok; N++)
{
S1=RichEdit1->Lines->Strings[NN-1];
S2=Label1->Caption;
if (AnsiString(S1[1])==AnsiStringS2([1])) Povt=2;
} |
|
Может Label1->Caption не содержит символов.
|
|
SmAlex |
Отправлено: 02.12.2005, 08:50 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Точно содержит... |
|
gvg |
Отправлено: 02.12.2005, 09:08 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
QUOTE (Grigoriy @ 02/12/2005, 07:06) |
|
Что это за конструкция? |
|
AVC |
Отправлено: 02.12.2005, 09:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Какую ошибку?
И зачем обратное преобразование сиволов в строку
if (AnsiString(S1[1])==AnsiStringS2([1]))
?
|
|
SmAlex |
Отправлено: 02.12.2005, 10:09 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Разобрался... Спасибо за помощь!! |
|