![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Нужно найти в файле по Ф.И.О номер телефона. У меня только получается найти просто Фамилию. Помогите кто чем может.
Код:
var
j:Integer;
s:ansistring;
s1,s2:AnsiString;
f:TextFile;
begin
s2:='Ñòðîêè íà÷èíàþòñÿ ñî ñëîâà'+edit1.Text;
Label1.Caption:=s2;
s1:=Edit1.Text;
j:=0;
AssignFile(f,'D:\Input.txt');
Reset(f);
while not (Eof(f)) do
begin
j:=j+1;
Readln(f,s);
if Pos(s1,s2)>0
then
s2:=copy(s1,Pos(' ',s2)+1,Length(s2));
Label1.Caption:=Label1.Caption+' '+IntTostr(j);
end;
CloseFile(f);
if s2=Label1.Caption
then
Label1.Caption:=' ôàéëå íåò ñòðîê íà÷èíàþùèõñÿ ñî ñëîâà ' +edit1.Text;
end
end. |
|
#2
|
||||
|
||||
|
Запихай это в датасет.
и вообще, begin-end расставь, а то фиг поймёшь, какой-то полупитоновый стиль оформления. |
|
#3
|
|||
|
|||
|
Блин, я уже парюсь с этой прогой неделю и нифига , а завтра сдача курсовой. Помоги пожалуйста чтоб прога роботала. Можешь по своему как-то сделать.Очень нужно.
|
|
#4
|
||||
|
||||
|
Плохо чо...
|
|
#5
|
|||
|
|||
|
Я так понял ты не поможешь?
|
|
#6
|
|||
|
|||
|
Ну ты бы пример файла добавил бы, что-ли... а то по коду ревес-инжиниринг делать лень...
|
|
#7
|
|||
|
|||
|
В текстовом файле пишем
Иванов А.А 232343 // Ф.И.О и телефон Петров В.В 234355 В делфи допустив в едит1 пишем Иванов А.А ив едит2 выдает мне его телефон. Как-то так. |
|
#8
|
||||
|
||||
|
В этой задаче достаточно проверить, что строка из файла начинается с введенной в Edit. Хоть руками через substr, хоть при помощи чего-то типа AnsiStartsStr. После чего брать все цифры после этой подстроки как телефон.
|
|
#9
|
||||
|
||||
|
Цитата:
Мог бы заказать курсач, или у ботаников выклянчить. Последний раз редактировалось M.A.D.M.A.N., 07.06.2015 в 21:20. |
|
#10
|
|||
|
|||
|
Цитата:
Через StringList Код:
procedure TForm1.Button1Click(Sender : TObject);
var
F : TStringList;
I : Integer;
begin
F := TStringList.Create;
Try
F.LoadFromFile('D:\Input.txt');
For I := 0 To F.Count-1 Do
If Pos(Edit1.Text,F[i]) > 0 Then
Begin
Edit2.Text := Trim(Copy(F[i],Length(Editg1.Text)+1,Length(F[i])-Length(Editg1.Text));
Break;
End;
Finally
F.Free;
End;
end;Через паскалевские файлы: Код:
procedure TForm1.Button1Click(Sender : TObject);
var
F : TextFile;
S : String;
begin
F := AssignFile('D:\Input.txt');
Reset(F);
While Not EoF(F) Do
Begin
ReadLn(F,S);
If Pos(Edit1.Text,S) > 0 Then
Begin
Edit2.Text := Trim(Copy(S,Length(Editg1.Text)+1,Length(S)-Length(Editg1.Text));
Break;
End;
End;
CloseFile(F);
end;Если надо без учета регистра, то "заворачиваем" все строки в AnsiUpperCase. Последний раз редактировалось lmikle, 07.06.2015 в 23:12. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Zayco (07.06.2015)
| ||
|
#11
|
||||
|
||||
|
Цитата:
Последний раз редактировалось Bargest, 07.06.2015 в 22:17. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Zayco (07.06.2015)
| ||
|
#12
|
|||
|
|||
|
Спасибо большое , выручил.
|
|
#13
|
|||
|
|||
|
Цитата:
Какой вопрос - такой ответ. В принциае, можно придумать кучу случаев, когда этот код будет работать неправильно. Но тут вспоминаем, что это курсач. Соответсвенно, особо заковыристых случаев там не будет. Вообще, в нормально продукте за такое хранение данных руки надо сравзу отрывать. Да и для поиска каждый раз читать весь файл - не самая хорошая идея. Но, для курсоча, вполне сойдет. |