Помощь - Поиск - Пользователи - Календарь
Полная версия: поиск слов в текстовом файле с помощью проги в
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
~Maks~
Здравствуйте!
мне нужет текст программы в Delphi !

программа

В текстовый файл записываем слова(слова в столбик пишем), в делфи пишим программую которая по запросу ищет слово или слово сочитание в текстовом файле! после нахождения выводит результат.
интерфейс
1.поле
2.кнопка 'поиск'
3. поле где выводится результат

---
если ничего не нашла программа пишим в поле что ничего не найдено


please кто шарит напишите программу пожалуйста!
GoodWind
в чем затруднения ?
сам писАть пробовал, или хочешь чтобы за тебя решили?

Примерный алгоритм:
1.открываешь файл
2.пока не конец файла
начало
читаешь строку
если строка не совпадает с искомой то продолжаешь
иначе к пункту 3.
конец
3. Выводишь результат.
~Maks~
трудность в том что я на словах знаю как это сделать(то что ты написал) а написать программу не шарю как !

кому не сложно помогите plz !! mega_chok.gif
GoodWind
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const LIST_FILENAME='c:\file.txt';
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
sl:TStringList;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
sl:=TstringList.Create;
sl.LoadFromFile(LIST_FILENAME);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
label1.Caption:='Ничего не найдено';
for i:=0 to sl.Count-1 do
begin
if sl.Strings[i]=Edit1.Text
then label1.Caption:=sl.Strings[i];
end;
end;

end.


вроде работает rolleyes.gif
~Maks~
To: GoodWind
огромное тебе спасибо ! ты хороший человек!

не можешь подсказать ещё какие процедуры нужно вставить для

счётчика? тоесть сколько раз я нашёл(запросил) какоенить слово ! к примеру слово1 я запросил 5 раз а слово2 запросил 10 раз а слово3 2 раза и т.д. что бы это куданить записывалось а потом сортировалось в файле txt от большего к меньшему!

подскажите несли тебе не составит труда !
зарание благодарин!
GoodWind
"ух... ну у вас и запросы - сказала база данных и повисла"
счас погляжу....

Цитата
ты хороший человек!

да прям =)
Guest
To: GoodWind
_List:=TStringlist.Create;

выдаёт ошибку ! её надо немного модернизировать под сортировку только хз как !

Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo3: TMemo;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;  i:integer; _List:TStrings;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var i,num:integer; _List,_ListCount:TStrings; tmpBuf:string;

  function GetNumLine(_List:TStrings; FileString:string):integer;

  var i:integer;

  begin

  result:=-1;

    for i:=0 to _list.Count-1 do

    if pos(FileString+'|',_list.Strings[i])>0 then begin

    result:=i;

    exit;

    end;

  end;



begin
  _List:=TStringlist.Create;

_ListCount:=TStringlist.Create;

try

_List.LoadFromFile('c:\s.txt');

if fileexists('c:\_count.txt') then _ListCount.LoadFromFile('c:\_count.txt');

  memo2.Clear;

for i:=0 to memo1.Lines.Count-1 do begin

  if _List.IndexOf(memo1.Lines.Strings[i])<>-1 then

    memo2.Lines.Add(memo1.Lines.Strings[i]);

  num:=GetNumLine(_ListCount,memo1.Lines.Strings[i]);

  

  if num<0 then _ListCount.Add(memo1.Lines.Strings[i]+'|1') else begin

    tmpBuf:=_ListCount.Strings[num];

    _ListCount.Strings[num]:=memo1.Lines.Strings[i]+'|'+
      inttostr(strtoint(copy(tmpBuf,pos('|',tmpBuf)+1,
            length(tmpBuf)-pos('|',tmpBuf)))+1);

    end;

end;

if memo2.Lines.Count=0 then memo2.Lines.Add('Ieoeaa ia iaeaaii...');


memo3.Clear;

for i:=0 to _ListCount.Count-1 do

  memo3.Lines.Add(copy(_ListCount.Strings[i],1,pos('|',_ListCount.Strings[i])-1) +
    ' - ' + copy(_ListCount.Strings[i],pos('|',_ListCount.Strings[i])+1,
    length(_ListCount.Strings[i])-pos('|',_ListCount.Strings[i])));


  _ListCount.SaveToFile('c:\_count.txt');

finally

_List.Free;

_ListCount.free;

end;

end;
_List:=TStringlist.Create;

try

_List.LoadFromFile('c:/s.txt');

  memo2.Clear;

for i:=0 to memo1.Lines.Count-1 do

  if _List.IndexOf(memo1.Lines.Strings[i])<>-1 then

    memo2.Lines.Add(memo1.Lines.Strings[i]);

  if memo2.lines.count<0 then memo2.Lines.Add('Ничего не найдено...');

finally

_List.Free;

end.
~Maks~
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo3: TMemo;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;  i:integer;

implementation


{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

var i,num:integer;_list, _ListCount:TStringList; tmpBuf:string;


function GetNumLine(List:TStringList; FileString:string):integer;

var i:integer;

begin

    result:=-1;

    for i:=0 to list.Count-1 do

    if pos(FileString+'|',list.Strings[i])>0 then

    begin

        result:=i;

        exit;

    end;

end;



begin

    _List:=TStringlist.Create;

    _ListCount:=TStringlist.Create;

    try

        _List.LoadFromFile('c:\s.txt');

        if fileexists('c:\_count.txt') then _ListCount.LoadFromFile('c:\_count.txt');

        memo2.Clear;

        for i:=0 to memo1.Lines.Count-1 do

        begin

            if _List.IndexOf(memo1.Lines.Strings[i])<>-1 then

                memo2.Lines.Add(memo1.Lines.Strings[i]);

            num:=GetNumLine(_ListCount,memo1.Lines.Strings[i]);

            if num<0 then _ListCount.Add(memo1.Lines.Strings[i]+'|1')

            else

            begin

                tmpBuf:=_ListCount.Strings[num];
                _ListCount.Strings[num]:=
                                  memo1.Lines.Strings[i]+'|'+
                                  inttostr(strtoint(copy(tmpBuf,pos('|',tmpBuf)+1,
                                  length(tmpBuf)-pos('|',tmpBuf)))+1);

            end;

        end;

        if memo2.Lines.Count=0 then memo2.Lines.Add('Ieoeaa ia iaeaaii...');

        memo3.Clear;

        for i:=0 to _ListCount.Count-1 do

            memo3.Lines.Add(copy(_ListCount.Strings[i],1,
                             pos('|',_ListCount.Strings[i])-1) +
                             ' - '+ copy(_ListCount.Strings[i],pos('|',_ListCount.Strings[i])+1,
                             length(_ListCount.Strings[i])-pos('|',_ListCount.Strings[i])));

            _ListCount.SaveToFile('c:\_count.txt');

    finally

        _List.Free;

        _ListCount.free;

    end; //try-finally


    _List:=TStringlist.Create;

    try

        _List.LoadFromFile('c:\s.txt');

        memo2.Clear;

        for i:=0 to memo1.Lines.Count-1 do

            if _List.IndexOf(memo1.Lines.Strings[i])<>-1 then

                memo2.Lines.Add(memo1.Lines.Strings[i]);

        if memo2.lines.count=0 then memo2.Lines.Add('Ничего не найдено...');

    finally

        _List.Free;


end; //try-finally

end;


end.

ошибку исправил!

Не ТЫ исправил, а ТЕБЕ исправили... Сказать, кто? Ты что думаешь, самый умный, с одного форума на другой задачки перекидываешь, и создаешь и там и там ВИДИМОСТЬ того, что что-то делаешь? Не пойдет... Привет Тестировщице !!!

подскажите как сделать сортировку в файле _List.LoadFromFile('c:\s.txt');
тоесть в s.txt что бы сортировалось по данным из файла _ListCount.SaveToFile('c:\_count.txt'); _count.txt !

имеются мемо1 мемо2 мемо3 едит1 едит2 едит3

в мемо3 выводится счётчик запросов тоесть сколько раз запросил какоенить слово! это всё записывается в файл _count.txt !
а мне нужно что бы по средством этой статы сортировались слова от большего(больше запросов) к меньшмему(мало запросов)
пример:
файл _count.txt
кот-1
лиса-3
волк-6
медведь-2

файл s.txt
волк
лиса
медведь
кот

-----------
вот так мне нужно помогите plz сделать !
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.