Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Поиск в текст файле


Автор: GEK 22.5.2008, 08:33
В текстовом файле  F  найти строки содержащие в качестве фрагмета заданную строку!
Напишите пожалста текст программы в форме! Заранее спасибо! 

Автор: THandle 22.5.2008, 09:06
Товарищ Гектор, хватит копировать темы, так Вам тем более не помогут.

Автор: ama_kid 22.5.2008, 09:30
Цитата(THandle @  22.5.2008,  09:06 Найти цитируемый пост)
так Вам тем более не помогут
согласен, явно выраженное стремление решить лабораторки\курсовую\экзамен чужими руками, не приложив ни капли усилий, не прибавляет желания помочь такому человеку...

Автор: KasMP 22.5.2008, 09:34
Цитата(ama_kid @  22.5.2008,  09:30 Найти цитируемый пост)
согласен, явно выраженное стремление решить лабораторки\курсовую\экзамен чужими руками, не приложив ни капли усилий, не прибавляет желания помочь такому человеку... 

А ты знаешь, как кириллицу из *.pas (т.е. из-под MSDOS) перенести сюда на форум (т.е. в Windows)?

Автор: Данкинг 22.5.2008, 09:38
Цитата(GEK @  22.5.2008,  09:33 Найти цитируемый пост)
В текстовом файле  F  найти строки содержащие в качестве фрагмета заданную строку!

Проход циклом по файлу (readln) и поиск нужного фрагмента функцией pos.

Цитата(KasMP @  22.5.2008,  10:34 Найти цитируемый пост)
А ты знаешь, как кириллицу из *.pas (т.е. из-под MSDOS) перенести сюда на форум (т.е. в Windows)? 

А зачем??

Автор: THandle 22.5.2008, 09:41
Цитата(ama_kid @  22.5.2008,  10:30 Найти цитируемый пост)
согласен, явно выраженное стремление решить лабораторки\курсовую\экзамен чужими руками, не приложив ни капли усилий, не прибавляет желания помочь такому человеку...


Самая большая проблема в том что человек еще к тому же копирует темы:
http://forum.vingrad.ru/forum/topic-212536.html

Если бы не было темы этой темы, я дал бы ему готовый код. А так желания что то совсем отпало.

Автор: KasMP 22.5.2008, 09:49
Цитата(Данкинг @  22.5.2008,  09:38 Найти цитируемый пост)
А зачем?? 

Надо вот http://forum.vingrad.ru/index.php?showtopic=210196&view=findpost&p=1520608 smile .

Автор: ama_kid 22.5.2008, 09:53
Цитата(KasMP @  22.5.2008,  09:34 Найти цитируемый пост)
А ты знаешь, как кириллицу из *.pas (т.е. из-под MSDOS) перенести сюда на форум (т.е. в Windows)? 
Я открываю в Far'е, делаю всему тексту Ctrl+X, переключаю кодировку, делаю Ctrl+V - текст для переноса готов  smile 

Автор: KasMP 22.5.2008, 09:56
Цитата(ama_kid @  22.5.2008,  09:53 Найти цитируемый пост)
Я открываю в Far'е, делаю всему тексту Ctrl+X, переключаю кодировку, делаю Ctrl+V - текст для переноса готов  smile

Спасибо большое smile smile!
Скачаю FAR и попробую smile  smile .

Автор: GEK 22.5.2008, 10:27
Да согласен с копированием тем но вы лучше б помогли нежели надсмехаться надо мной поверте если бы я могла сама сделать я бы не просила ни кого"
Цитата

Если можешь помоги а не можешь не не лезь и не надсмехася без тебя помогут!

Автор: THandle 22.5.2008, 10:50
Самый примитивный пример:

Код

program Project1;

{$APPTYPE CONSOLE}

var
  FStr : string;
  FileName : string;
  SStr : string;
  F : text;
begin
  writeln('Enter file name: ');
  readln(FileName);
  Assign(F, FileName);
  Reset(F);
  writeln('Enter string: ');
  readln(FStr);
  while not Eof(F) do
    begin
      readln(F, SStr);
      if pos(FStr, SStr) <> 0 then
        writeln(SStr);
    end;
  CloseFile(F);
  readln;
end.



GEK, и не копируй больше темы, желающих помогать это не прибавляет явно.

Автор: GEK 22.5.2008, 12:12
THandle СПАСИБо большое копировать темы не буду больше только не пойму как  в форму перенести? smile 

Автор: THandle 22.5.2008, 13:50
GEK, да формочку еще легче.

Вот например напишем функцию, название которой да я понять не могу(случайно клавиши так нажалисьsmile)))

Код

procedure GAS(const S, FileName : string; Strings : TStrings);
var
  F : text;
  SStr : string;
begin
  if ((FileName = '') or (not Assigned(Strings))) then
    exit;
  Assign(F, FileName);
  Reset(F);
  while not Eof(F) do
    begin
      readln(F, SStr);
      if pos(S, SStr) <> 0 then
        Strings.Add(SStr);
    end;
end;



Работу с файлами оставил стандартную, может в этом и состоит задание, хотя легче было бы использовать TStringList.

На форме следующие компоненты:

TMemo, TButton, 2xTEdit

По нажатию кнопки пишем следующее:
Код


procedure TForm1.Button1Click(Sender: TObject);
begin
  GAS(Edit1.Text, Edit2.Text, Memo1.Lines);
end;



Весь код выглядит так:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure GAS(const S, FileName : string; Strings : TStrings);
var
  F : text;
  SStr : string;
begin
  if ((FileName = '') or (not Assigned(Strings))) then
    exit;
  Assign(F, FileName);
  Reset(F);
  while not Eof(F) do
    begin
      readln(F, SStr);
      if pos(S, SStr) <> 0 then
        Strings.Add(SStr);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GAS(Edit1.Text, Edit2.Text, Memo1.Lines);
end;

end.



В архиве находится сам проект, только лучше сам все воспроизведи, полезнее будет smile 

И еще:

Возьми почитай вот эту вот книгу:
http://www.delphilab.ru/content/view/17/46/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)