Code: char* s=Memo1->Text.c_str(); for(int i=1;i<=strlen(s);i++) { ShowMessage(s[i]); } Вводим в Memo1 строку "hahaha". Казалось бы, каждая буква из строки должна последовательно выводиться в месседжбоксах, но нет. Выводится a. Эксперементально я установил, что выводится второй символ и только он. Почему?
for(int i=1;i<=strlen(s);i++) Ты цикл запустил с 1, в то время как символы строки начинаются с 0 позиции...
Поменял, просто я в паскале привык что нулевой символ не задействован. Но проблема не решилась, код теперь Code: char* s=Memo1->Text.c_str(); for(int i=0;i<=strlen(s);i++) { ShowMessage(s[i]); } Вводим hahaha в Memo1, выскакивает два меседжбокса: в первом одна буква h, во втором пусто.
Если сделать ввод в Edit, а вывод результата в Memo, то все работает верно и каждый символ введенной строки по очереди записывается в новую строку: Code: void __fastcall TForm1::Button1Click(TObject *Sender) { char* str = Edit1->Text.c_str(); for (int i = 0; i < strlen(str); i++) { Memo1->Lines->Add(str[i]); } } Или тебе нужен вывод именно в ShowMessage?