Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2011, 05:41   #1
D_e_n_n
Пользователь
 
Регистрация: 29.01.2008
Сообщений: 30
По умолчанию поиск и выципление строк из txt файла

Прошу помощи в решении задачи, сам только начал писать на Делфи
есть txt файл 1.txt в котором в каждой строке есть текст (в данном примере их всего две):
ИВАНОВ РОМАН ВАСИЛЬЕВИЧ,
ЧУЧЕНАШЕВА АГАФЬЯ ИВАНОВНА,

и есть файл 2.txt в котором есть этиже строки,
мне необходимо встать на строки с тем же ФИО и вычипить из этой строки ЧЕРГА,НАГОРНАЯ,12, и 914.64 у ИВАНОВ РОМАН ВАСИЛЬЕВИЧ
а у ЧУЧЕНАШЕВА АГАФЬЯ ИВАНОВНА - ШЕБАЛИНО,МОЛОДЕЖНАЯ,12, и 222.00

и вывести всё это в MEMO в виде
ИВАНОВ РОМАН ВАСИЛЬЕВИЧ, ЧЕРГА,НАГОРНАЯ,12, 914.64
ЧУЧЕНАШЕВА АГАФЬЯ ИВАНОВНА, ШЕБАЛИНО,МОЛОДЕЖНАЯ,12, 222.00


сделал я вот что:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
TS:TStringList;
i,j:integer;
Str: String;
Str2: String;
Str3: String;
Str4: String;
P,p2: Integer;

begin
opendialog1.Execute;
edit1.Text:=opendialog1.FileName;
TS:=TStringList.Create;
TS.LoadFromFile(edit1.Text);
str:='pname=';
str4:=',dat_opl';
for i:=0 to TS.Count-1 do
 begin
   P:=Pos(Str,TS[i]);
   P2:= Pos(Str4,TS[i]);
   Str2:=Copy(TS[i], P, 6);
   if str2=str then
     str3:=Copy(TS[i],p+6,(p2-p)-6);
     Memo1.Lines.Add(UTF8Decode(str3));
 end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
TS2:TStringList;
j:integer;
begin
opendialog1.Execute;
edit2.Text:=opendialog2.FileName;//файл 2.txt
TS2:=TStringList.Create;
TS2.LoadFromFile(edit2.Text);
for j:=0 to TS2.Count-1 do
 begin
помогите здесь выцепить ФИО, адрес, сумму
 end;
end;
Вложения
Тип файла: txt 1.txt (1,022 байт, 133 просмотров)
Тип файла: txt 2.txt (1.8 Кб, 123 просмотров)

Последний раз редактировалось Stilet; 04.02.2011 в 13:55. Причина: выцепил ФИО из 1.txt, запихнул их в мемо, но вот только строк в мемо получилось 7, почему не пойму?
D_e_n_n вне форума Ответить с цитированием
Старый 03.02.2011, 10:54   #2
D_e_n_n
Пользователь
 
Регистрация: 29.01.2008
Сообщений: 30
По умолчанию

выцепил ФИО из 1.txt, запихнул их в мемо

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
TS:TStringList;
i,j:integer;
Str: String;
Str2: String;
Str3: String;
Str4: String;
P,p2: Integer;
a,b:integer;
con:boolean;

begin
opendialog1.Execute;
edit1.Text:=opendialog1.FileName;
TS:=TStringList.Create;
TS.LoadFromFile(edit1.Text);
str:='pname=';
str4:=',dat_opl';
for i:=0 to TS.Count-1 do
 begin
   P:=Pos(Str,TS[i]);
   P2:= Pos(Str4,TS[i]);
   Str2:=Copy(TS[i], P, 6);
   if str2=str then
     str3:=Copy(TS[i],p+6,(p2-p)-6);
     Memo1.Lines.add(UTF8Decode(str3));
 end;
 //убрать дубликаты из мемо1
 for a:=0 to memo1.Lines.Count-1 do
begin
con:=false;
for b:=0 to memo2.lines.count-1 do
 begin
 if memo1.lines.Strings[a]=memo2.Lines.Strings[b] then con:=true;
 end;
if not con then memo2.Lines.Add(memo1.lines.Strings[a]);
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to memo1.Lines.Count - 1 do
ShowMessage(memo1.Lines[i]);
//здесь осталось только найти похожую ФИО и разобрать строку
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
opendialog2.Execute;
edit2.Text:=opendialog2.FileName;

ListBox1.Items.LoadFromFile(edit2.Text);//данные из 2.txt загрузил в ListBox1
end;
осталось только найти похожую ФИО и разобрать строку

Последний раз редактировалось Stilet; 04.02.2011 в 13:54.
D_e_n_n вне форума Ответить с цитированием
Старый 03.02.2011, 13:39   #3
D_e_n_n
Пользователь
 
Регистрация: 29.01.2008
Сообщений: 30
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
TS:TStringList;
i,j:integer;
Str: String;
Str2: String;
Str3: String;
Str4: String;
P,p2: Integer;
a,b:integer;
con:boolean;

begin
opendialog1.Execute;
edit1.Text:=opendialog1.FileName;
TS:=TStringList.Create;
TS.LoadFromFile(edit1.Text);
str:='pname=';
str4:=',dat_opl';
for i:=0 to TS.Count-1 do
 begin
   P:=Pos(Str,TS[i]);
   P2:= Pos(Str4,TS[i]);
   Str2:=Copy(TS[i], P, 6);
   if str2=str then
     str3:=Copy(TS[i],p+6,(p2-p)-6);
     Memo1.Lines.add(UTF8Decode(str3));
 end;
 //óáðàòü äóáëèêàòû èç ìåìî1
 for a:=0 to memo1.Lines.Count-1 do
begin
con:=false;
for b:=0 to memo2.lines.count-1 do
 begin
 if memo1.lines.Strings[a]=memo2.Lines.Strings[b] then con:=true;
 end;
if not con then memo2.Lines.Add(memo1.lines.Strings[a]);
end;
end;

//===========ðàçáîð txt ôàéëà============= 
procedure TForm1.Button3Click(Sender: TObject);
//FileName - ôàéë ñïèñêà ñòðîê
//FileName2 - ôàéë â êîòîðîì íàäî èñêàòü ñòðîêó
//Edit1.text - ñòðîêà
var i,j:integer;
    f:textFile;
    buf, str:string;
begin
for j:= 0 to Memo2.Lines.Count - 1 do

for i := 0 to ListBox1.Items.Count - 1 do
 Str := ListBox1.items.Strings[i];
 ListBox1.ItemIndex := i; // Âûäåëÿåì íàéäåííóþ ñòðîêó â LB
 // Äàëåå
 assignFile(f,edit2.Text); // Îòêðûâàåì ôàéë FileName2
 reset(f); // îòêðûâàåì ñóùåñòâóþùèé ôàéë
 while not SeekEof(f) do begin
  Readln(f, buf); // ÷òåíèå èç ôàéëà ñòðîêè
  if pos(Str,buf)>0 then begin
   // íà¸äåíà ñòðîêà Str â ôàéëå
   Memo3.Lines.Append(buf); // выводим найденную строку в Memo
  end;
 end;

 closeFIle(f);
end;
//=======================================

procedure TForm1.Button1Click(Sender: TObject);

begin
opendialog2.Execute;
edit2.Text:=opendialog2.FileName;

ListBox1.Items.LoadFromFile(edit2.Text);
end;

end.
помогите почемуто в мемо3 попадает только последняя строка?


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.02.2011 в 14:34.
D_e_n_n вне форума Ответить с цитированием
Старый 03.02.2011, 15:10   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var sl1,sl2:TStringList;
    s1,s2,s3:string;
    i,j:integer;
begin
 sl1:=TStringList.Create;
 sl2:=TStringList.Create;
 sl1.LoadFromFile('d:\11.txt');
 sl2.LoadFromFile('d:\22.txt');
 for i := 0 to sl1.Count - 1 do
  begin
   s1:=UTF8Decode(sl1[i]);
   if Pos('ФИО',s1)<>0 then
    begin
     Delete(s1,1,Pos('ФИО',s1)+3);
     s1:=Copy(s1,1,Pos(',',s1)-1);
     for j := 0 to sl2.Count - 1 do
     if Pos(s1,sl2[j])<>0 then
     begin
      s2:=sl2[j];
      Delete(s2,1,Pos(';',s2));
      s3:=s2;
      s2:=Copy(s2,1,Pos(';',s2)-1);
      Delete(s3,1,Pos(';',s3));
      s3:=Copy(s3,Pos(';',s3)+1,Pos(';;;;',s3)-Pos(';',s3)-1);
      memo1.Lines.Add(s1 + ' ' + s2+' '+s3);
     end;
    end;
  end;
 sl1.Free;
 sl2.Free
end;

Последний раз редактировалось SERG1980; 03.02.2011 в 15:27.
SERG1980 вне форума Ответить с цитированием
Старый 03.02.2011, 15:19   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

//убрать дубликаты из мемо1

Это ты конечно гениально придумал - вместо того чтобы НЕ добавлять дубликаты (что делается до смешного просто) ты их сначала понасандалил туда и теперь выковыриваешь оттуда
Придумываеи себе проблемы, чтобы потом их героически преодолевать в режиме подвига)
mss вне форума Ответить с цитированием
Старый 03.02.2011, 16:11   #6
D_e_n_n
Пользователь
 
Регистрация: 29.01.2008
Сообщений: 30
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
//убрать дубликаты из мемо1

Это ты конечно гениально придумал - вместо того чтобы НЕ добавлять дубликаты (что делается до смешного просто) ты их сначала понасандалил туда и теперь выковыриваешь оттуда
Придумываеи себе проблемы, чтобы потом их героически преодолевать в режиме подвига)
новичек как ни как
D_e_n_n вне форума Ответить с цитированием
Старый 03.02.2011, 16:39   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
и есть файл 2.txt в котором есть этиже строки,
мне необходимо встать на строки с тем же ФИО и вычипить из этой строки ЧЕРГА,НАГОРНАЯ,12, и 914.64 у ИВАНОВ РОМАН ВАСИЛЬЕВИЧ
а у ЧУЧЕНАШЕВА АГАФЬЯ ИВАНОВНА - ШЕБАЛИНО,МОЛОДЕЖНАЯ,12, и 222.00
пиши грамотно постановку задачи
NiCola999 вне форума Ответить с цитированием
Старый 04.02.2011, 05:39   #8
D_e_n_n
Пользователь
 
Регистрация: 29.01.2008
Сообщений: 30
По умолчанию

Всем огромное спасибо, вот я нагородил то, а тут у SERG1980 всё красиво
D_e_n_n вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать текст с файла 1.txt и записать в 2.txt Kasper1 Общие вопросы по Java, Java SE, Kotlin 1 14.12.2010 05:56
сортировка строк в txt Шушелла Общие вопросы .NET 9 24.04.2010 17:23
C# Представление txt файла как массива строк asheb Помощь студентам 7 20.04.2010 11:51
Поиск и вывод строк из файла samCS PHP 8 10.03.2010 04:07
Сформировать список строк L1, считав его из файла input.txt Gaika Помощь студентам 4 03.07.2008 06:33