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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.06.2015, 15:29
Zayco Zayco вне форума
Прохожий
 
Регистрация: 07.06.2015
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию поиск в текстовом файле

Нужно найти в файле по Ф.И.О номер телефона. У меня только получается найти просто Фамилию. Помогите кто чем может.

Код:
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  
Старый 07.06.2015, 17:17
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Запихай это в датасет.
и вообще, begin-end расставь, а то фиг поймёшь, какой-то полупитоновый стиль оформления.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 07.06.2015, 17:52
Zayco Zayco вне форума
Прохожий
 
Регистрация: 07.06.2015
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Блин, я уже парюсь с этой прогой неделю и нифига , а завтра сдача курсовой. Помоги пожалуйста чтоб прога роботала. Можешь по своему как-то сделать.Очень нужно.
Ответить с цитированием
  #4  
Старый 07.06.2015, 17:57
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Плохо чо...
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 07.06.2015, 18:03
Zayco Zayco вне форума
Прохожий
 
Регистрация: 07.06.2015
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Я так понял ты не поможешь?
Ответить с цитированием
  #6  
Старый 07.06.2015, 19:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну ты бы пример файла добавил бы, что-ли... а то по коду ревес-инжиниринг делать лень...
Ответить с цитированием
  #7  
Старый 07.06.2015, 20:00
Zayco Zayco вне форума
Прохожий
 
Регистрация: 07.06.2015
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

В текстовом файле пишем
Иванов А.А 232343 // Ф.И.О и телефон
Петров В.В 234355
В делфи допустив в едит1 пишем Иванов А.А ив едит2 выдает мне его телефон. Как-то так.
Ответить с цитированием
  #8  
Старый 07.06.2015, 20:08
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В этой задаче достаточно проверить, что строка из файла начинается с введенной в Edit. Хоть руками через substr, хоть при помощи чего-то типа AnsiStartsStr. После чего брать все цифры после этой подстроки как телефон.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #9  
Старый 07.06.2015, 21:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
Смех

Цитата:
Сообщение от Bargest
В этой задаче достаточно проверить, что строка из файла начинается с введенной в Edit. Хоть руками через substr, хоть при помощи чего-то типа AnsiStartsStr. После чего брать все цифры после этой подстроки как телефон.
Дак за него надо сделать, а не теорию описывать, у него курсач завтра.
Мог бы заказать курсач, или у ботаников выклянчить.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 07.06.2015 в 21:20.
Ответить с цитированием
  #10  
Старый 07.06.2015, 22:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Zayco
В текстовом файле пишем
Иванов А.А 232343 // Ф.И.О и телефон
Петров В.В 234355
В делфи допустив в едит1 пишем Иванов А.А ив едит2 выдает мне его телефон. Как-то так.

Через 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  
Старый 07.06.2015, 22:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Pos(Edit1.Text,F[i]) > 0
Не круто, ведь одна фамилия может входить в другую. Как "Щедрин М.Е." и "Салтыков-Щедрин М.Е.". Pos > 0 найдет Щедрина в Салтыкове-Щедрине. Лучше тогда Pos = 1, благодаря инициалам вхождение с начала текста должно быть только одно.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 07.06.2015 в 22:17.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Zayco (07.06.2015)
  #12  
Старый 07.06.2015, 22:28
Zayco Zayco вне форума
Прохожий
 
Регистрация: 07.06.2015
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо большое , выручил.
Ответить с цитированием
  #13  
Старый 07.06.2015, 23:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Bargest
Не круто, ведь одна фамилия может входить в другую. Как "Щедрин М.Е." и "Салтыков-Щедрин М.Е.". Pos > 0 найдет Щедрина в Салтыкове-Щедрине. Лучше тогда Pos = 1, благодаря инициалам вхождение с начала текста должно быть только одно.

Какой вопрос - такой ответ.
В принциае, можно придумать кучу случаев, когда этот код будет работать неправильно. Но тут вспоминаем, что это курсач. Соответсвенно, особо заковыристых случаев там не будет.
Вообще, в нормально продукте за такое хранение данных руки надо сравзу отрывать. Да и для поиска каждый раз читать весь файл - не самая хорошая идея. Но, для курсоча, вполне сойдет.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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