Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 17:42   #1
Дмитрий mause
 
Регистрация: 21.09.2011
Сообщений: 8
Смущение Поиск файлов по дате.

Добрый вечер. Занимаюсь разработкой программы, в которой осуществляется поиск файлов (.txt), по заданной дате. В директории указаны года и месяца папок (например: C:\base\2011\01\....). Нужно по дате открыть нужный год и месяц, взять хранящиеся в ней файлы и сравнить их с другой такой же директорией (например: E:\base\2011\01\...), все файлы, которых будет нехватать во второй директории, добавить, а остальные не трогать. Прошу вашего великодушия и помощи, начинающему. Заступорился вот с этого момента:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    ComboBox1: TComboBox;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    StatusBar1: TStatusBar;
    Button3: TButton;
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
///////////////////////////Ïåðåâîäèì äàòó///////////////////////////////////////
procedure TForm1.FormActivate(Sender: TObject);
  begin
        ShortDateFormat:='dd.mm.yyyy';
          ComboBox1.ItemIndex:=StrToInt(Copy(DateToStr(Date),4,2))-1;
            Edit1.Text:=Copy(DateToStr(Date),7,4);
end;
/////////////////////////////////Êíîïêà âûõîäà//////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
  begin
    halt;
      close;
end;
////////////////////////////////////////////////////////////////////////////////
function PadL(s_InStr:string; i_Wide:integer; c_CHR:string):string;
begin
 while Length(s_InStr)<i_Wide
  do
   s_Instr:=c_Chr+S_Instr;
 Result:=s_Instr;
end;
////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button2Click(Sender: TObject);
  var  i:integer;
        st1,st2,st3,st4:string;
  begin
  for i:=1 to 99
    do
    begin
      StatusBar1.SimpleText:='Îáðàáàòûâàåòñÿ ôàéëû'+IntToStr(i);
        st1:=LabeledEdit1.Text+Padl(IntToStr(i),4,'0')+'\'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+'\b'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+Padl(IntToStr(i),4,'0')+'.txt';
         st2:=LabeledEdit1.Text+Padl(IntToStr(i),4,'0')+'\'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+'\d'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+Padl(IntToStr(i),4,'0')+'.txt';
          st3:=LabeledEdit1.Text+Padl(IntToStr(i),4,'0')+'\'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+'\d'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+Padl(IntToStr(i),4,'0');
           st4:=LabeledEdit1.Text+Padl(IntToStr(i),4,'0')+'\'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+'\d'+Padl(IntToStr(comboBox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,1)+Padl(IntToStr(i),4,'0')+'.txt';
    if FileExists(st1) and FileExists(st2) 
     then

      begin

end;

  end;
 StatusBar1.SimpleText:='Êîïèðîâàíèå çàâåðøåíî';
end.

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

Последний раз редактировалось Serge_Bliznykov; 21.09.2011 в 23:20.
Дмитрий mause вне форума Ответить с цитированием
Старый 21.09.2011, 17:55   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Заступорился вот с этого момента
Читать чужой код всегда сложнее, чем это кажется автору кода. С какого момента-то? Получения списка .txt файлов в директории?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.09.2011, 18:00   #3
Дмитрий mause
 
Регистрация: 21.09.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Читать чужой код всегда сложнее, чем это кажется автору кода. С какого момента-то? Получения списка .txt файлов в директории?
Да вы совершенно правы. Я задумался, что нужно, реализовать сравнение данных в папках, либо сравнение даты создания файлов? Либо искать другой выход из положения.
Дмитрий mause вне форума Ответить с цитированием
Старый 21.09.2011, 18:20   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем дата? Как я понял надо просто сравнить файлы в двух директориях и если во второй каких-то файлов нету, то скопировать их туда?
Как-то так можно имена файлов получить (из консольного проекта копипаст):
Код:
   
     var fs: TSearchRec;
     ...
     FindFirst('c:\*',faAnyFile,fs);
     repeat
       if  (Pos('.txt', fs.name)<>0) and (fs.name <> '.') and (fs.name <> '..')  then
       begin
          Writeln(fs.name);
       end;
     until FindNext(fs) <> 0;
     FindClose(fs);
     readln;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.09.2011 в 18:30.
Alex11223 вне форума Ответить с цитированием
Старый 21.09.2011, 20:26   #5
Дмитрий mause
 
Регистрация: 21.09.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А зачем дата?
А дата нужна чтобы выбирать нужный год и месяц в папках. Но это можно и в пути указать. Спасибо большое, что откликнулись, сделаю как вы посоветовали.
Дмитрий mause вне форума Ответить с цитированием
Старый 23.09.2011, 16:20   #6
Дмитрий mause
 
Регистрация: 21.09.2011
Сообщений: 8
Печаль

Не могу сообразить, как осуществить копирование файлов, которые найдены в директории и отсортированны в FindFirst - е. Будьте любезны, помогите, ошибка в сравнение файлов (FindFirst).
procedure TForm1.Button2Click(Sender: TObject);
Код:
var fromFile,Tofile:string;
      i:integer;
      fs: TSearchRec;
    begin
      Application.ProcessMessages;
      for i:=1 to 99 do
    begin
      fromfile:=LabeledEdit1.Text+Padl(IntToStr(Combobox1.ItemIndex+1),2,'0')+'\'+Copy(Edit1.Text,4,0)+Padl(IntToStr(i),4,'0')+'.txt';
        tofile:=LabeledEdit2.Text+Edit1.Text+'\'+Padl(IntToStr(Combobox1.ItemIndex+1),2,'0')+'\'+Copy(Edit1.Text,4,0)+Padl(IntToStr(i),4,'0')+'.txt';
    if Fileexists(fromfile) then
      begin
          if not DirectoryExists(LabeledEdit2.Text+Edit1.Text+'\'+Padl(IntToStr(Combobox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,0))then
          ForceDirectories(LabeledEdit2.Text+Edit1.Text+'\'+Padl(IntToStr(Combobox1.ItemIndex+1),2,'0')+Copy(Edit1.Text,4,0));
          StatusBar1.SimpleText:='Êîïèðóåòñÿ ôàéë '+fromfile;
      begin
          FindFirst(fromfile,faAnyFile,fs);
      repeat
       if  (Pos('.txt', fs.name)<>0) and (fs.name <> '.') and (fs.name <> '..')  then
       begin
          Copyfile(Pchar(fs.name),Pchar(ToFile),False);
       end;
     until FindNext(fs) <> 0;
     FindClose(fs);
     end;
     end;
  showmessage(fromfile);
  showmessage(tofile);
  showmessage(fs.name);
   end;
  Statusbar1.SimpleText:='Файлы скопированны';
end;

end.

Последний раз редактировалось Дмитрий mause; 23.09.2011 в 16:23.
Дмитрий mause вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid поиск по дате MAZADA БД в Delphi 2 28.04.2011 03:57
Поиск по Дате andrenisimus БД в Delphi 2 29.10.2010 02:56
Поиск по дате Len@09 БД в Delphi 6 12.02.2010 15:01
Поиск по дате-? Evgenii БД в Delphi 15 12.11.2009 16:46
Проверка закачиваемых файлов по дате обновления Evgen1976 Работа с сетью в Delphi 2 19.03.2009 13:02