| 
| 
 | Вопрос # 2 226/ вопрос решён / | 
 |  Здравствуйте уважаемые эксперты! Помогите написать программу, в которой используется MDI-окна (текстовые). Дан текстовый файл с каким-то текстом на диске С:\ . На форме в окно TEdit вводится некоторое слово, а по нажатии TBitton  в окне TMemo Выводятся именно те предложения текста, которые содержат данное слово. Подскажите как и с помощью каких компонентов это реализовать, не хочется перед преподом полным идиотом выглядеть!
 
|  |   Вопрос задал: Darchiev Marat (статус: Посетитель)Вопрос отправлен: 23 декабря 2008, 01:44
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Darchiev Marat!Не совсем понятно, какой Вы хотите спроектировать дизайн, пример текстового MDI  редактора можно найти в демках, которые поставляются с делфи. А код, который выполнит Ваше требование, я привожу ниже
 
 var sl:TStringList;
  s:string;
  i:integer;
begin
  s := Edit1.text;
  sl := TstringList.create;
  sl.LoadFromFile('C:\file');
  Memo1.Clear;
  for i:=0 to sl.count -1 do
    if pos(s, sl[i]) <> 0 then Memo1.lines.add(sl[i]);
  sl.free;
end;Надеюсь, что по предложениями понимались строки файла. А то в противном случае код заметно усложняется. Хотя всё равно не такой уж и сложный.По поводу компонентов - Вы уже сами написали всё, что надо.
 Если код преподавателю покажеться слижком сложным - перепишем проще:)
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 23 декабря 2008, 02:17
 Оценка за ответ: 5
 Комментарий к оценке: Здравствуйте Вадим! Исчерпывающий ответ, коротко и ясно. Мне самое главное идея, а там дальше сколько фантазии хватит.благодарю.
 |  Ответ #2. Отвечает эксперт: Anderson N.N Здравствуйте, Darchiev Marat!Вот еще один вариант ! Когда я сел писать вам ответ Вадим еще не ответил  поэтому не удержусь приведу
 свой вариант. Хотя тот легче...
 Главное на что стоит обратить внимание поиск не зависит от регистра, а чтобы зависел нужно удалить
 две строки. В коде напротив них есть соответствующие комменты
 Приложение:Переключить в обычный режим procedure TForm1.Button1Click(Sender: TObject); var f:TextFile;     s,s1:string;     i:integer;begin   AssignFile(f,'c:file.txt');   Reset(f);   while not eof(f) do    Begin       Readln(f,s);       for  i:=1 to length(s) do       begin           if not((s[i]='.')or (s[i]='!')or(s[i]='?'))           then    s1:=s1+s[i]           else           begin                if ( Pos(Edit1.Text,s1)<>0)              then              begin                  memo1.Lines.Add(s1);                  s1:='';             end;           end;       end;     end;end;
|  | Ответ отправил: Anderson N.N (статус: 2-ой класс)Время отправки: 23 декабря 2008, 03:21
 Оценка за ответ: 5
 Комментарий к оценке: Здравствуйте Anderson! Да, несмотря на то что вариант Вадима легче, для меня более понятным оказался именно ваш вариант.благодарю!!!
 |  
 Мини-форум вопросаВсего сообщений: 0. 31 января 2011, 19:33: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |