|
#1
|
|||
|
|||
Поиск по 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
|
|||
|
|||
А почему Вы открываете EXE-файл ?
|
#3
|
|||
|
|||
Это я описался там txt.
Сейчас он получается читает файл но ошибку выдает на readln(f,n2); |
#4
|
|||
|
|||
Если я правильно понял, то требуется узнать номер строки текстового файла, в которой встречается значение, вписанное в 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
|
|||
|
|||
Немного не так. Там не номер строки, там просто поиск по файлу, например там два 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
|
|||
|
|||
Может можно както сделать поиск по файлу через FindDialog?
|
#7
|
|||
|
|||
Обязательно использовать текстовые файлы? Или можно использовать типизированные? Просто, не совсем ясна структура файла, по которому поиск будет осуществляться.
|
#8
|
|||
|
|||
Я сделал немного проще. через файнд диалог. При открытии диалога содержимое файла грузится в мемо и там уже ищет
Код:
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
|
||||
|
||||
А из чего следует, что это должен быть именно текстовый файл. Я по заданию такого не вижу. А раз этого явно не сказано, то можно сделать через ClientDataSet и XML-файл
Вот простенький пример такой реализации: http://depositfiles.com/files/828xmr1tb Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
По ссылке файл удален
|
#11
|
||||
|
||||
Долго спите
Выкладываю еще разок на другой обменник: http://www.sharemania.ru/0222583 - исполняемый http://www.sharemania.ru/0229021 - исходняк Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Спасибо, вроди все сделал
|