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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 17:27   #1
D_A_akella
Пользователь
 
Регистрация: 12.04.2010
Сообщений: 12
По умолчанию Проверка на наличие файла и последующие действия.

Добрый день. Вот наградило начальство дополнением к проге что заказало)

есть алгоритм что удаляет все файлы оставляя только 5 последних...
но тут нуно сделать чтобы он не удалял файлы от 1 и 16 числа...это не проблема в реализации. дело 5 минут.но оказываеться Начальнику нуно чтобы если нет 1 и 16...сохраянлся файл с 2 и 17, если нет с 2 и 17 то 3 и 18 итд....

вот тут я в тупике...каким местом реализовать..что и как))) не представляю...
оч нужна помощь. заранее спасибо)!!!!!!!!!!!
D_A_akella вне форума Ответить с цитированием
Старый 19.04.2010, 17:34   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...сначала прогоняешь по циклу от 1 до последнего и проверяешь наличие нужных [1,16], [1+i, 16+i], когда нашел нужные, тогда и удаляешь остальное/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.04.2010, 17:43   #3
D_A_akella
Пользователь
 
Регистрация: 12.04.2010
Сообщений: 12
По умолчанию

ну смотри. у меня месяц. архивов всего 5.тоесть 5 дней проходит на 6..1 архив удаляется.
и я не могу проверить сразу весь масив т.к. значения подаются по очереди....
вот код.
Код:
begin
        for m:=0 to n do
          begin
            IniFile:=TIniFile.Create(ProgDir+'\BackUp.ini');
            SourceDir:=IniFile.ReadString('BackUp','BackupPath','');
            PoutName:=IniFile.ReadString('Base'+IntToStr(m),'Name','');
            I := FindFirst(SourceDir +Poutname+'_'+ '*.rar', faAnyFile, SR);
            q := FindFirst(SourceDir +Poutname+'_'+ '*.Log', faAnyFile, SRL);
            to_delete:=SourceDir + string(SR.Name);
            to_delete_log:=SourceDir + string(SRL.Name);
            Arr_FileName[0]:=string(SR.Name);
            a:=1;
            while I = 0 do
              begin
                I := FindNext(SR);
                filename:=SR.Name;
                Arr_FileName[a]:=FileName;
                inc(a);
              end;
            s:=a-7;
            if a>6 then
              begin
                While s>-1 do
                  begin
                    my_len:=strlen(PChar(Arr_FileName[s]));
                    for i:=4 to 5 do
                      begin
                       my_str:=Arr_FileName[s][my_len-i]+my_str;
                      end;
                    if (my_str<>nachMes) and (my_str<>midmes) then
                    DeleteFile(PAnsiChar(SourceDir+Arr_FileName[s]));
                    dec(s);
                  end;
              end;
            SysUtils.FindClose(SR);
            Arr_LogFile[0]:=String(SRL.Name);
            a:=1;
            while I = 0 do
              begin
                q := FindNext(SRL);
                filename:=SRL.Name;
                Arr_LogFile[a]:=FileName;
                inc(a);
              end;
            s:=a-7;
            if a>6 then
              begin
                While s>-1 do
                  begin       //ТУТ и Должна в идеале проводиться проверка!! на дату. она счас проводиться но только для 16 числ. а заданием тут и непахнет
                    my_len:=strlen(PChar(Arr_FileName[s]));
                    for i:=4 to 5 do
                      begin
                       my_str:=Arr_FileName[s][my_len-i]+my_str;
                      end;
                    if (my_str<>nachMes) and (my_str<>midmes) then
                    DeleteFile(PAnsiChar(SourceDir+Arr_LogFile[s]));
                    dec(s);
                  end;
              end;
            SysUtils.FindClose(SRL);
            end;

      end
D_A_akella вне форума Ответить с цитированием
Старый 20.04.2010, 16:44   #4
D_A_akella
Пользователь
 
Регистрация: 12.04.2010
Сообщений: 12
По умолчанию

вот что получилось...но собака не хочет работать как надо

Код:
    GetDir(0,ProgDir);
    IniFile:=TIniFile.Create(ProgDir+'\BackUp.ini');
    TypeB:=IniFile.ReadInteger('Base'+IntToStr(j),'Type',TypeB);
    if TypeB=1 then
      begin
        for m:=0 to n do
          begin
            IniFile:=TIniFile.Create(ProgDir+'\BackUp.ini');
            SourceDir:=IniFile.ReadString('BackUp','BackupPath','');
            PoutName:=IniFile.ReadString('Base'+IntToStr(m),'Name','');
            I := FindFirst(SourceDir +Poutname+'_'+ '*.rar', faAnyFile, SR);
            q := FindFirst(SourceDir +Poutname+'_'+ '*.Log', faAnyFile, SRL);
            to_delete:=SourceDir + string(SR.Name);
            to_delete_log:=SourceDir + string(SRL.Name);
            Arr_FileName[0]:=string(SR.Name);
            a:=1;
            while I = 0 do
              begin
                I := FindNext(SR);
                filename:=SR.Name;
                Arr_FileName[a]:=FileName;
                inc(a);
              end;
            s:=a-7;
            d:=a-1;
            ///////////////////////////////////////////////////////////////
            for j:=0 to d do
              begin
                my_len:=strlen(PChar(Arr_FileName[j]));
                my_str:='';
                for i:=4 to 5 do
                  begin
                    my_str:=Arr_FileName[j][my_len-i]+my_str;
                  end;
                Ar_DM[0]:=strtoint(my_str);

              end;
            D1:=Ar_DM[c];
            ////////////////////////////////////////////////////////////////
            b:=0;
            for s:=0 to 7 do
              begin
                b:=b+Cikl(Ar_DM[s],s);
              end;
            if b>1 then
              b:=1;
            ///////////////////////////////////////////////////////////////
            if b=1 then
            begin
            if D1<>MM then
              if a>6 then
                begin
                  While s>-1 do
                    begin
                      DeleteFile(PAnsiChar(SourceDir+Arr_FileName[s]));
                      dec(s);
                    end;
                end;
            SysUtils.FindClose(SR);
             end
            ////////////////////////////////////////////////////////////////
            else////////////////////////////////////////////////////////////

              inc(MM);
              if D1>MM then
              if a>6 then
                begin
                  While s>-1 do
                    begin
                      DeleteFile(PAnsiChar(SourceDir+Arr_FileName[s]));
                      dec(s);
                    end;
                end;
              SysUtils.FindClose(SR);

            /////////////////////////////////////////////////////////////////
            Arr_LogFile[0]:=String(SRL.Name);
            a:=1;
            while I = 0 do
              begin
                q := FindNext(SRL);
                filename:=SRL.Name;
                Arr_LogFile[a]:=FileName;
                inc(a);
              end;
            s:=a-7;
            if a>6 then
              begin
                While s>-1 do
                  begin

                    if (my_str<>nachMes) and (my_str<>midmes) then
                    DeleteFile(PAnsiChar(SourceDir+Arr_LogFile[s]));
                    dec(s);
                  end;
              end;
            SysUtils.FindClose(SRL);
            end;

      end
D_A_akella вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на наличие файла ruavia3 Microsoft Office Excel 1 05.02.2010 21:13
Проверка на наличие файла Vladya Общие вопросы Delphi 7 10.10.2009 01:26
Проверка на наличие в массиве istoe Microsoft Office Excel 8 26.08.2009 11:55
Проверка на наличие файла Demetrius Помощь студентам 12 28.07.2009 00:27
Проверка на наличие таблицы в БД Ramires БД в Delphi 3 18.12.2008 08:59