![]() |
|
#1
|
|||
|
|||
![]() Доброго времени суток. Уважаемые профессионалы, подскажите пожалуйста как можно реализовать следующее: у меня есть папка куда скидываются xml файлы и архивы с ними. Я уже реализовал поиск файлов и отправку их в мемо. Не могу понять почему он выдает только последнее совпадение со строчкой.
делаю все так Код:
procedure TForm1.SpeedButton3Click(Sender: TObject); var j,i:integer; sa,st:shortstring; begin for i:=0 to Memo4.Lines.Count-1 do begin if (Pos('package_n_',Memo4.Lines.Strings[i])<>0) then begin St:=Copy(Memo4.Lines.Strings[i],11,length(Memo4.Lines.Strings[i])-12); Memo5.Lines.Add(st); end; for j:=0 to Memo6.Lines.Count-1 do begin if (Pos('req_',Memo6.Lines.Strings[j])<>0) then begin Sa:=Copy(Memo6.Lines.Strings[j],5,length(Memo6.Lines.Strings[j])-6); Memo7.Lines.Add(sa); end; end; end; begin for i := 0 to memo5.lines.Count - 1 do if memo5.Lines.Strings[i]=memo7.Lines.Strings[j] then memo8.Lines.Add(st); for j := 0 to memo7.Lines.Count - 1 do if memo7.Lines.Strings[j]=memo5.Lines.Strings[i] then memo8.Lines.Add(sa); end; end; ![]() |
#2
|
||||
|
||||
![]() Каков принцип копирования этого
Код:
... St:=Copy(Memo4.Lines.Strings[i],11,length(Memo4.Lines.Strings[i])-12); ... Код:
... Sa:=Copy(Memo6.Lines.Strings[j],5,length(Memo6.Lines.Strings[j])-6); ... Да и потом, вот в этом месте Код:
... for i := 0 to memo5.lines.Count - 1 do if memo5.Lines.Strings[i]=memo7.Lines.Strings[j] then memo8.Lines.Add(st); for j := 0 to memo7.Lines.Count - 1 do if memo7.Lines.Strings[j]=memo5.Lines.Strings[i] then memo8.Lines.Add(sa); ... Код:
procedure TForm1.SpeedButton3Click(Sender: TObject); var j, i: integer; sa, st: shortstring; begin for i := 0 to Memo4.Lines.Count - 1 do begin if (Pos('package_n_',Memo4.Lines.Strings[i]) <> 0) then begin St:= Copy(Memo4.Lines.Strings[i],11,Length(Memo4.Lines.Strings[i])-12); Memo5.Lines.Add(st); end;{if} for j := 0 to Memo6.Lines.Count - 1 do begin if (Pos('req_', Memo6.Lines.Strings[j]) <> 0) then begin Sa:= Copy(Memo6.Lines.Strings[j], 5, Length(Memo6.Lines.Strings[j]) - 6); Memo7.Lines.Add(sa); end; {if} end; {for j} end; {for i} //begin for i := 0 to memo5.lines.Count - 1 do if Memo5.Lines.Strings[i] = Memo7.Lines.Strings[j] then Memo8.Lines.Add(st); for j := 0 to Memo7.Lines.Count - 1 do if Memo7.Lines.Strings[j] = Memo5.Lines.Strings[i] then Memo8.Lines.Add(sa); //end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() Цитата:
package_n_145114eb-a009-4774-9da4-180be513209c.xml package_n_3812d4c1-f850-4e75-8a6a-2b8653656921.xml package_n_83b9004c-9ad2-48e3-bee5-f86f33fcec06.xml package_n_aa1da6fd-0a78-4b00-a9ce-001110a3c712.xml package_n_bd6b0172-a9a6-4849-9f61-df32bca15923.xml package_n_db29d604-164c-4af2-a9ec-dab1a1732bf9.xml package_n_fc450acd-3bf1-4457-b372-c8fb07530265.xml а в memo6 текст по аналогии загружаемый как и предыдущий и содржит: req_145114eb-a009-4774-9da4-180be513209c.zip req_aa1da6fd-0a78-4b00-a9ce-001110a3c712.zip req_db29d604-164c-4af2-a9ec-dab1a1732bf9.zip req_fc450acd-3bf1-4457-b372-c8fb07530265.zip а такое маленькое количество символов из-за того, что я не знал как это все дело вывести полностью и действительно, оно мне показывает не полностью число, а только частично. Если укажите на недостаток буду только признателен. ![]() Мне удалось решить поставленную задачу только через listbox, правда при выводе возникают дубликаты. Код выглядит примерно так Код:
procedure TForm1.SpeedButton3Click(Sender: TObject); var j,i:integer; sa,st:shortstring; begin for i:=0 to Memo4.Lines.Count-1 do begin if (Pos('package_n_',Memo4.Lines.Strings[i])<>0) then begin St:=Copy(Memo4.Lines.Strings[i],11,length(Memo4.Lines.Strings[i])-12); ListBox4.Items.Add(St); end; for j:=0 to Memo6.Lines.Count-1 do begin if (Pos('req_',Memo6.Lines.Strings[j])<>0)then begin Sa:=Copy(Memo6.Lines.Strings[j],5,length(Memo6.Lines.Strings[j])-6); ListBox5.Items.Add(Sa); end; end; end; begin for i := 0 to Listbox4.Items.Count - 1 do for j := 0 to Listbox5.Items.Count - 1 do if pos(ListBox4.Items.Strings[i],ListBox5.Items.strings[j])>0 then ListBox6.Items.Add(listbox5.Items.Strings[j]); end; end; |
#4
|
||||
|
||||
![]() А что должно происходить на выходе, в смысле, следует отобрать имена файлов для которых есть архив или что-то другое?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
![]() да, должно выводить xml с которыми имеется архив
|
#6
|
||||
|
||||
![]() Посмотрите пжлст, такое прокатит?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
![]() работает! но вот когда делаю загрузку
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject); var SR, SK, SV: TSearchRec; S: TStrings; otv:word; c, Dir : string; j,i: integer; st, sa:shortstring; FindRes, FindRez :Integer; sl:TStringList; begin if SelectDirectory('Выберите папку', 'C:\', Dir) then begin Edit1.Text := Dir; end; if FindFirst(Dir+'\*.xml',faAnyFile,SK) = 0 then repeat S:=TStringList.Create; S.LoadFromFile(Dir+'\'+SK.Name); Memo1.Text:=Memo1.Text+#13+S.Text; S.Free; until FindNext(SK) <> 0; FindClose(SK); begin FindRes:=FindFirst(Dir+'\*.xml',faAnyFile,SR); While FindRes=0 do memo4.Lines.Add(SR.Name); FindRes:=FindNext(SR); end; FindClose(SR); begin FindRez:=FindFirst(Dir+'\*.zip',faAnyFile,SV); While FindRez=0 do begin memo6.Lines.Add(SV.Name); FindRez:=FindNext(SV); end; FindClose(SV); end; end; end. |
#8
|
||||
|
||||
![]() FileCtrl в uses подключен?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#9
|
|||
|
|||
![]() Блиин
![]() ![]() http://zalil.ru/34603942 |
#10
|
||||
|
||||
![]() Вот это в коде замените
![]() Код:
... FindRes:=FindFirst(Dir+'\*.xml',faAnyFile,SR); While FindRes=0 do begin memo4.Lines.Add(SR.Name); FindRes:=FindNext(SR); end; FindClose(SR); ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 25.06.2013 в 10:34. Причина: самоцензура |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
demon-sheff (25.06.2013)
|
#11
|
|||
|
|||
![]() СПАСИБО ОГРОМНОЕ!!! ЭТО ТО ЧТО НАДО!!! ВАША ПОМОЩЬ МНЕ ОЧЕНЬ ПОМОГЛА! Еще раз СПАСИБО!
|