Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 21:13   #1
NightFox
Новичок
Джуниор
 
Регистрация: 27.02.2010
Сообщений: 2
По умолчанию не совсем обычный поиск текста - как?

Здравствуйте!
Вопрос заключается в следующем: имеется файл 1.txt, в нем несколько строк формата
слово=другое слово, еще слово;описание слова:другое описание
слово=другое слово, еще слово;описание слова:другое описание
слово=другое слово, еще слово;описание слова:другое описание
и.т.д.
Нужно искать текст из edit1.text cовпадающие с словами ДО знака "=" и вставлять его в richedit1, выделяя жирным. Далее, если найдено совпадение брать из этой же строки текст от "=" до ";" и вставлять его на новую строку в richedit1, но уже курсивом, а далее снова на новой строке в richedit1 вставлять текст от ":" до конца строки но уже другим шрифтом, файл которого приготовлен заранее.
Подскажите, как это реализовать, уже всю голову сломал, если можно - пример. Я просто не очень силен в программировании. Заранее - огромное спасибо!
NightFox вне форума Ответить с цитированием
Старый 28.02.2010, 14:51   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

алгоритм ты уже сам написал, осталось его реализовать

используем для чтения из файла функцию Radln, далее циклим прочтенную строку до знака равно с запоминанием символов до этого знака, сравниваем его с едитом и т.п.
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 28.02.2010, 15:16   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I, J: integer;
  FText: string;
begin
  Memo1.Lines.LoadFromFile(ExtractFilePath(Application.Exename) + '1.txt');
  for I := 0 to Memo1.Lines.Count - 1 do
  begin
    while (Copy(Memo1.Lines[I], J, 1)[1] in ['а'..'д']) or    
            (Copy(Memo1.Lines[I], J, 1)[1] in ['А'..'Д'])  do
    begin
      FText := FText + Copy(Memo1.Lines[I], J, 1);
    end;
    if Edit1.Text = FText then
      richedit1.Text := FText;  
  end;
end;
И так далее в таком же духе
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 28.02.2010, 20:29   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

например так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStrings;
  index, CountFind: Integer;
begin
  RichEdit1.Clear;
  CountFind := 1;
  sl := TStringList.Create;
  sl.LoadFromFile('1.txt');

  for index := 0 to sl.Count - 1 do
  begin
    if Pos(Edit1.Text, sl.Strings[index]) > 0 then
    begin
      if sl.Strings[index][Length(Edit1.Text) + 1] = '=' then
      begin
        case CountFind of
          1:
          begin
            RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold];
            RichEdit1.Lines.Add(Copy(sl.Strings[index], 1, Length(Edit1.Text)));
          end;
          2:
          begin
            RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsItalic];
            RichEdit1.Lines.Add(Copy(sl.Strings[index], Pos('=', sl.Strings[index]) + 1,
              Pos(';', sl.Strings[index]) - Length(Edit1.Text)));
          end;
          3:
          begin
            RichEdit1.SelAttributes.Name := 'Courier New';
            RichEdit1.Lines.Add(Copy(sl.Strings[index], Pos(':', sl.Strings[index]) + 1,
              Length(sl.Strings[index])));
          end;
        end;
        Inc(CountFind);
      end;
    end;
  end;
  sl.Free;
end;
Но будет искать только три раза одинаковое слово, если встретится больше трех раз, то 4-й и последующие добавляться не будут.
psycho-coder вне форума Ответить с цитированием
Старый 05.03.2010, 02:50   #5
NightFox
Новичок
Джуниор
 
Регистрация: 27.02.2010
Сообщений: 2
По умолчанию

psycho-coder
Спасибо за код, то что вы предложили - более подходит под решение задачи, только вот одно но - не работает как нужно! При поиске до "=" в RichEdit1 вставляется не найденное слово в файле, а Edit1.Text. CountFind 2 вставляет текст сначала строки до ";". Так же не вставляется в RichEdit1 и остальная строка (";"...":" и т.д.). Попытки исправить самостоятельно никчему толковому не привели, помогите!

Последний раз редактировалось NightFox; 05.03.2010 в 03:02.
NightFox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста в RichView Shouldercannon Общие вопросы Delphi 3 03.02.2010 22:14
Поиск и копирование текста. paratruper17 Microsoft Office Word 7 14.10.2009 13:53
Поиск похожего текста Valg Microsoft Office Excel 18 04.10.2009 20:32
Поиск текста в документе haros Общие вопросы Delphi 0 28.07.2009 18:52
Как добавить в основной проект юнит из совсем другого проекта? Nara Shikamaru Общие вопросы Delphi 3 09.06.2009 08:50