Поиск в Memo
int i;
int d=Memo1->Lines->Text.Length();
int Strings[d];
while (i<=d)
{
if (Memo1->Lines->Strings=="7") ShowMessage("нашел!");
i++;
}
int i;
int d=Memo1->Lines->Text.Length();
int Strings[d];
while (i<=d)
{
if (Memo1->Lines->Strings=="7") ShowMessage("нашел!");
i++;
}
Переменные инициализируй. Это раз. во вторых
так нельзя.
можно так
В третьих используй средства форматирования кода.
В-четвертых, зачем Вы вообще определяте массив Strings? Он нигде не используется.
В-пятых, судя по тому, что в цикле while (i<=d) Вы работаете с Memo1->Lines->Strings, d-это количество строк. Но
это не количество строк, а длина всего текста, находящегося в Memo.
Либо определяйте правильно количество строк:
При этом не забывайте, что нумерация строк в Memo - от 0 до d-1, а индексация в AnsiString - от 1 до d.
Подробнее про инициализацию переменных:
...
while (i<=d)
А где Вы значение i устанавливаете? При такой записи оно имеет фонарное значение из памяти, код работать не будет.
получается надо так? или гдето еще запара? :)
int i=0;
int d=Memo1->Lines->Text.Length();
while (i<=d-1)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}
Вы это внимательно прочитали? Отсюда следует:
int d=Memo1->Lines->Text.Length();
while (i<=d)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}
И еще:
Не стоит игнорировать замечания модератора !
Прочтите же наконец правила оформления текста
получается надо так? или гдето еще запара? :)
int i=0;
int d=Memo1->Lines->Text.Length();
while (i<=d-1)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}
Надо так
int d=Memo1->Lines->Text.Length();
while (i < d)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}
зачем выполнять еще одну операцию вычитания?
надо написать
надо написать
ну так и напиши - ShowMessage(Memo1->Text); Что тебе ......... мешает то? ;)
чего-то этот код не кажется мне рабочим...Ведь '10' - это уже не символ, а строка...
Дабы избежать лишних вопросов:
AnsiString text=Memo1->Text;
int d=text.Length();
while (i<=d)
{
if (text=='7')
{text.Delete(i,1); text.Insert("10",i); d++;}
i++;
}
Memo1->Clear();
Memo1->Lines->Add(text);
Вот так точно будет работать. Или вместо Delete и Insert используйте функцию Replace, если такая есть.
и чтобы уже все понять нехватает только работа с фрагментами.
Задача: в тексте найти слово "мама" :), перевести туда курсор и видилить слово другим цветом.
Тут уже, получается, надо не мемо, а RichEdit.
Фрагмент ищет
а вот как цвет поменять и перевести курсор я не знаю. :( ну а если слово повторяется, то надо чтобы при повторном нажатии на кнопку начинался тот же самый поиск, только с того места где курсор. для меня это пока не реально. хелп
Золотые Ваши слова! В билдере есть ХЕЛП ! Нужно выделить RichEdit и нажать F1 и появится раздел справки, целиком и полностью посвященный RichEdit. Еще в билдере есть пример использования RichEdit (установленный_билдер\Examples\Apps\RichEdit). А еще есть просто безразмерный хелп в виде интернета, где тоже можно найти то, что Вам требуется.
Пишу Вам код. Он будет работать, но не оптимально, потому что я не помню всех методов RichEdit наизусть, а посмотреть сейчас не могу. Усовершенствуйте этот пример с помощью СПРАВКИ В БИЛДЕРЕ.
//в обработчике кнопки
{
AnsiString text=RichEdit1->Text;
int d=text.Length();
while (i<=d-3)
{
if (text.SubString(i,4)=="мама")
{
RichEdit1->SelStart=i-1;
RichEdit1->SelLength=4;
RichEdit1->SelAttributes->Color=clRed;
i++;
break;
}
i++;
}
хелпом очень редко так как с английским туговато.
книг - завались, читаю все потихоньку. но чтобы зделать то что надо знаний мало. вот и задаю тупые вопросы, за что извеняюсь.
спасибо за терпения ):o :)