![]() |
|
|
#1
|
|||
|
|||
|
Приветствую всех!
Помогите пожалуйста разобраться с поиском. Нужно чтобы в файле находил нужную строку например по фамилии и выводил результат например в 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
|
|||
|
|||
|
Спасибо, вроди все сделал
![]() |