Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.09.2009, 08:20
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию Поиск по txt

Приветствую всех!
Помогите пожалуйста разобраться с поиском.
Нужно чтобы в файле находил нужную строку например по фамилии и выводил результат например в ShowMassage.
написал такое но почемуто не работает:
Код:
procedure TForm3.Button2Click(Sender: TObject);
var  F:TextFile;
  n2: Integer;
begin
 AssignFile(F,'memo.exe');
 Reset(F);
  while not Eof(f) do
  begin
 readln(f,n2);
 ShowMessage(IntToStr(n2));
 end;
 CloseFile(f);
 end;

как сделать чтобы он смотрел в Edit2 и искал в текстовом файле по этому значению?
Ответить с цитированием
  #2  
Старый 12.09.2009, 09:33
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

А почему Вы открываете EXE-файл ?
Ответить с цитированием
  #3  
Старый 12.09.2009, 09:43
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Это я описался там txt.
Сейчас он получается читает файл но ошибку выдает на readln(f,n2);
Ответить с цитированием
  #4  
Старый 12.09.2009, 09:45
dissident dissident вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

Если я правильно понял, то требуется узнать номер строки текстового файла, в которой встречается значение, вписанное в Edit2?

можно реализовать это вот так:

Код:
var
  ftext : TStrings;
  I: Integer;
begin
  ftext := TStringList.Create;
  Ftext.LoadFromFile('text.txt');
  for I := 0 to ftext.Count - 1 do
  if pos(Edit2.text,ftext.Strings[i]) > 0 then showmessage(inttostr(i));
end;
Ответить с цитированием
  #5  
Старый 12.09.2009, 09:55
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Немного не так. Там не номер строки, там просто поиск по файлу, например там два Editа фамилия и телефон и две кнопки поиска по фамилии и телефону, чтобы он ирскал по фамилии в тексте. Задание вообще звучало так:

Создается файл, в него записываются данные – фамилия, имя, номер телефона.
Предусмотрите возможность добавления данных или внесения новой информации с удалением содержимого файла, вывод содержимого файла, вывод данных по запрашиваемому номеру телефона, вывод данных по введенной фамилии (если в файле есть одинаковые фамилии – выводится список всех, имеющих эти фамилии).
Отсортируйте файл по «фамилия».

Пока вот что написал:
Код:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button1: TButton;
    Button5: TButton;
    Button6: TButton;
    Memo1: TMemo;
    Button7: TButton;
    procedure Button5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button6Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Label2Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);



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

var
  Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.Button5Click(Sender: TObject);
begin
Form3.Close;
Form1.Show;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Show;
end;

procedure TForm3.Button6Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
end;

procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case key of
    '0'..'9': key:=#0;
    end;
end;

procedure TForm3.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case key of
    '0'..'9': key:=#0;
    end;
end;

procedure TForm3.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
 case key of
    'А'..'Я','а'..'я','A'..'Z','a'..'z': key:=#0;
    end;

end;

procedure TForm3.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = #13) then begin
  Key:=#0;
  Perform(WM_NEXTDLGCTL,0,0);
end;
 end;


procedure TForm3.Label2Click(Sender: TObject);
begin
if Edit1.CanFocus then Edit1.SetFocus
end;

procedure TForm3.Label1Click(Sender: TObject);
begin
if Edit2.CanFocus then Edit2.SetFocus
end;

procedure TForm3.Label3Click(Sender: TObject);
begin
if Edit3.CanFocus then Edit3.SetFocus
end;

procedure TForm3.Button4Click(Sender: TObject);
var list:TextFile;
     txt:string;
begin
  txt:=  'ИМЯ: '+Edit1.Text+ #13#10 + 'Фамилия: ' +Edit2.Text+ #13#10
+ 'Номер телефона ' + Edit3.Text;

 AssignFile(list,'memo.txt');//регистрация файла
  Rewrite(list);
  Writeln(list,txt);
  CloseFile(list);
  ShowMessage('Данные записаны в файл');
 end;

procedure TForm3.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('memo.txt'); // загрузка
end;

procedure TForm3.Button7Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('memo.txt'); // сохранение
ShowMessage('Содержимое файла изменено');
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
memo1.Clear;
end;

procedure TForm3.Button2Click(Sender: TObject);
var
   F:TStrings;
  n2: Integer;
begin
 f:=TStringList.Create;
 F.LoadFromFile('memo.txt');
 for n2:=0 to f.Count - 1 do
 if pos(Edit2.Text,f.Strings[n2]) > 0 then ShowMessage(IntToStr(n2));
   end;


end.

Последний раз редактировалось nisolmer, 12.09.2009 в 10:01.
Ответить с цитированием
  #6  
Старый 12.09.2009, 17:49
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Может можно както сделать поиск по файлу через FindDialog?
Ответить с цитированием
  #7  
Старый 12.09.2009, 18:03
dissident dissident вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

Обязательно использовать текстовые файлы? Или можно использовать типизированные? Просто, не совсем ясна структура файла, по которому поиск будет осуществляться.
Ответить с цитированием
  #8  
Старый 12.09.2009, 18:17
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Я сделал немного проще. через файнд диалог. При открытии диалога содержимое файла грузится в мемо и там уже ищет
Код:
 procedure TForm3.Button2Click(Sender: TObject);
begin
   FindDialog1.Execute;
   Memo1.Lines.LoadFromFile('memo.txt');
end;

procedure TForm3.FindDialog1Find(Sender: TObject);

begin
if pos(FindDialog1.FindText, Memo1.Text) <> 0 then
begin
Memo1.HideSelection:=False;
Memo1.SelStart:=pos(FindDialog1.FindText, Memo1.Text)-1;
Memo1.SelLength:=Length(FindDialog1.FindText);
end
else
MessageDlg('Строка '+FindDialog1.FindText+' не найдена', mtConfirmation, [mbYes], 0);

просто незнаю как сделать поиск далее по тексту и чтобы он находил несколько значений и выделял их и сортировку тоже непойму как(.
Ответить с цитированием
  #9  
Старый 12.09.2009, 19:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А из чего следует, что это должен быть именно текстовый файл. Я по заданию такого не вижу. А раз этого явно не сказано, то можно сделать через ClientDataSet и XML-файл
Вот простенький пример такой реализации: http://depositfiles.com/files/828xmr1tb
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 13.09.2009, 16:22
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

По ссылке файл удален
Ответить с цитированием
  #11  
Старый 13.09.2009, 17:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Долго спите
Выкладываю еще разок на другой обменник:
http://www.sharemania.ru/0222583 - исполняемый
http://www.sharemania.ru/0229021 - исходняк
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #12  
Старый 17.09.2009, 01:09
nisolmer nisolmer вне форума
Прохожий
 
Регистрация: 10.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо, вроди все сделал
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter