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

Delphi Sources



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

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

Приветствую всех!
Помогите пожалуйста разобраться с поиском.
Нужно чтобы в файле находил нужную строку например по фамилии и выводил результат например в ShowMassage.
написал такое но почемуто не работает:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
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?

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

Код:
1
2
3
4
5
6
7
8
9
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а фамилия и телефон и две кнопки поиска по фамилии и телефону, чтобы он ирскал по фамилии в тексте. Задание вообще звучало так:

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

Пока вот что написал:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
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
По умолчанию

Я сделал немного проще. через файнд диалог. При открытии диалога содержимое файла грузится в мемо и там уже ищет
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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,723
Репутация: 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,723
Репутация: 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, время: 11:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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