Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск в Memo

6.8K
06 мая 2007 года
bolt90
80 / / 25.01.2007
Привет.не поиму чего у меня не выходит? вроде все просто...:confused:

int i;
int d=Memo1->Lines->Text.Length();
int Strings[d];
while (i<=d)
{
if (Memo1->Lines->Strings=="7") ShowMessage("нашел!");
i++;
}
1
06 мая 2007 года
kot_
7.3K / / 20.01.2000
Цитата: bolt90
Привет.не поиму чего у меня не выходит? вроде все просто...:confused:

int i;
int d=Memo1->Lines->Text.Length();
int Strings[d];
while (i<=d)
{
if (Memo1->Lines->Strings=="7") ShowMessage("нашел!");
i++;
}


Переменные инициализируй. Это раз. во вторых

 
Код:
int Strings[d];

так нельзя.
можно так
 
Код:
int *Strings = new int[d];

В третьих используй средства форматирования кода.
7.8K
06 мая 2007 года
Hrew
185 / / 23.04.2007
продолжим критику...

В-четвертых, зачем Вы вообще определяте массив Strings? Он нигде не используется.

В-пятых, судя по тому, что в цикле while (i<=d) Вы работаете с Memo1->Lines->Strings, d-это количество строк. Но
 
Код:
d=Memo1->Lines->Text.Length();

это не количество строк, а длина всего текста, находящегося в Memo.
Либо определяйте правильно количество строк:
 
Код:
d=Memo1->Lines->Count;
либо в цикле работайте с текстом, а не со строками:
 
Код:
if (Memo1->Text=='7') ShowMessage("нашел!");

При этом не забывайте, что нумерация строк в Memo - от 0 до d-1, а индексация в AnsiString - от 1 до d.

Подробнее про инициализацию переменных:
 
Код:
int i;
...
while (i<=d)

А где Вы значение i устанавливаете? При такой записи оно имеет фонарное значение из памяти, код работать не будет.
6.8K
06 мая 2007 года
bolt90
80 / / 25.01.2007
мне надо шоб проверял все символы и если находит определенный выскакивает сообщение.
получается надо так? или гдето еще запара? :)

int i=0;
int d=Memo1->Lines->Text.Length();
while (i<=d-1)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}
7.8K
06 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: Hrew
При этом не забывайте, что нумерация строк в Memo - от 0 до d-1, а индексация в AnsiString - от 1 до d.


Вы это внимательно прочитали? Отсюда следует:

 
Код:
int i=1;
int d=Memo1->Lines->Text.Length();
while (i<=d)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}


И еще:
Цитата: kot_
В третьих используй средства форматирования кода.


Не стоит игнорировать замечания модератора !
Прочтите же наконец правила оформления текста

1
06 мая 2007 года
kot_
7.3K / / 20.01.2000
Цитата: bolt90
мне надо шоб проверял все символы и если находит определенный выскакивает сообщение.
получается надо так? или гдето еще запара? :)

int i=0;
int d=Memo1->Lines->Text.Length();
while (i<=d-1)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}


Надо так

 
Код:
int i=0;
int d=Memo1->Lines->Text.Length();
while (i < d)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}

зачем выполнять еще одну операцию вычитания?
7.8K
06 мая 2007 года
Hrew
185 / / 23.04.2007
kot_, Вы немного не правы. Memo1->Text имеет тип AnsiString и при i=0 билдер будет громко ругаться.
1
06 мая 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Hrew
Вы это внимательно прочитали? Отсюда следует:
 
Код:
int i=1;
int d=Memo1->Lines->Text.Length();
while (i<=d)
{
if (Memo1->Text=='7') ShowMessage("нашел!");
i++;
}


Да кстати это более верно. Я туплю.

Цитата: Hrew

И еще:

Не стоит игнорировать замечания модератора !
Прочтите же наконец правила оформления текста



Ну если человеку больше нравится получать нарушения....

6.8K
06 мая 2007 года
bolt90
80 / / 25.01.2007
а что бы заменить символ на другой вместо
 
Код:
ShowMessage("нашел!");

надо написать
 
Код:
Memo1->Text='10';
?
1
06 мая 2007 года
kot_
7.3K / / 20.01.2000
Цитата: bolt90
а что бы заменить символ на другой вместо
 
Код:
ShowMessage("нашел!");

надо написать
 
Код:
Memo1->Text='10';
?


ну так и напиши - ShowMessage(Memo1->Text); Что тебе ......... мешает то? ;)

7.8K
07 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: bolt90
 
Код:
Memo1->Text='10';


чего-то этот код не кажется мне рабочим...Ведь '10' - это уже не символ, а строка...

Дабы избежать лишних вопросов:

Код:
int i=1;
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, если такая есть.
6.8K
07 мая 2007 года
bolt90
80 / / 25.01.2007
спасибо всем, все прекрасно работает.
и чтобы уже все понять нехватает только работа с фрагментами.

Задача: в тексте найти слово "мама" :), перевести туда курсор и видилить слово другим цветом.
Тут уже, получается, надо не мемо, а RichEdit.
Фрагмент ищет
 
Код:
if (RichEdit1->Text.Pos("мама"))


а вот как цвет поменять и перевести курсор я не знаю. :( ну а если слово повторяется, то надо чтобы при повторном нажатии на кнопку начинался тот же самый поиск, только с того места где курсор. для меня это пока не реально. хелп
7.8K
07 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: bolt90
хелп


Золотые Ваши слова! В билдере есть ХЕЛП ! Нужно выделить RichEdit и нажать F1 и появится раздел справки, целиком и полностью посвященный RichEdit. Еще в билдере есть пример использования RichEdit (установленный_билдер\Examples\Apps\RichEdit). А еще есть просто безразмерный хелп в виде интернета, где тоже можно найти то, что Вам требуется.

Пишу Вам код. Он будет работать, но не оптимально, потому что я не помню всех методов RichEdit наизусть, а посмотреть сейчас не могу. Усовершенствуйте этот пример с помощью СПРАВКИ В БИЛДЕРЕ.

Код:
int i=1;
//в обработчике кнопки
{
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++;
}
6.8K
07 мая 2007 года
bolt90
80 / / 25.01.2007
та я поиком в первую очередь пользуюсь...
хелпом очень редко так как с английским туговато.
книг - завались, читаю все потихоньку. но чтобы зделать то что надо знаний мало. вот и задаю тупые вопросы, за что извеняюсь.
спасибо за терпения ):o :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог