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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 12:01   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию Проверка всех файлов в текущей директории

Собственно, проблема. Мне нужно проверить расширение всех файлов директории, и если оно равно .rte, то удалить этот файл. Вопрос: как можно проверить все файлы? Т.е. как нибудь так(псевдокод):
Код:
for i:=1 to FilesCount('c:\словарь\') do
begin
        if ExtractFileExt(FindNext(...)) = '.rte' then Erase(F);
end;
_-Re@l-_ вне форума Ответить с цитированием
Старый 18.12.2010, 12:32   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
var
  fn: TSearchRec; //хранит характеристики наиденого фаила
  Finds: integer;
begin
  FindFirst(маска фаила: String, тип фаила'fsAniFile', fn );
  while Finds =0 do
  begin
    ...
    Finds:= FindNext(fn);
    Continue
  end;
end;  
так ты провериш все фаилы, потом проверяеш последние символи после . у fn.Name
VirusN13

Последний раз редактировалось artemavd; 18.12.2010 в 16:31.
ArtGrek вне форума Ответить с цитированием
Старый 18.12.2010, 12:40   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Да уже понял, спасибо, ArtGrek.

Код:
 FindFirst(маска фаила: String, тип фаила'fsAniFile', fn );
Вот возникли непонятки, поподробней....
Если делать так,
Цитата:
FindFirst('словарь\','fsAniFile',fn )
Не катит.И без кавычек тоже.

Последний раз редактировалось artemavd; 18.12.2010 в 16:31.
_-Re@l-_ вне форума Ответить с цитированием
Старый 18.12.2010, 13:56   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Так что ли:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  sr: TSearchRec;
begin
 if FindFirst('C:\test\*.*', faAnyFile, sr) = 0 then
  begin
    repeat
      if ExtractFileExt('C:\test\' + sr.Name) = '.rte' then
        DeleteFile('C:\test\' + sr.Name);
    until FindNext(sr) <> 0;
  FindClose(sr);
 end;
end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 18.12.2010, 14:02   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

ну да, именно так)
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 18.12.2010, 15:03   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var sr: TSearchRec;
    i,j: Integer;
    xNames: array of String;
begin
  i:=FindFirst('C:\test\*.rte',faAnyFile,sr);
  j:=0;
  while i=0 do begin
    if sr.Attr and faDirectory=0 then begin
      Inc(j);
      SetLength(xNames,j);
      xNames[j-1]:=sr.Name;
    end;
    i:=FindNext(sr);
  end;
  FindClose(sr);
  for i:=0 to j-1 do DeleteFile('C:\test\'+xNames[i]);
  SetLength(xNames,0);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2010, 15:17   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
'C:\test\*.rte'
Не надо так делать. А то потом файлов недосчитаетесь.

http://www.transl-gunsmoker.ru/2010/...firstfile.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 18.12.2010, 15:53   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Получается, что после фильтра по маске еще и дополнительную проверку нужно делать. Для меня это новость. Век живи , век учись... Интересно, диалоги открытия при работе с маской тоже подобную особенность имеют?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 18.12.2010 в 15:58.
Аватар вне форума Ответить с цитированием
Старый 18.12.2010, 18:02   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Смотря какие диалоги. (используют ли они FindFirstFile или нет).

Но, по большому счёту, так фильтруют почти все.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 18.12.2010, 22:28   #10
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Так что ли:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  sr: TSearchRec;
begin
 if FindFirst('C:\test\*.*', faAnyFile, sr) = 0 then
  begin
    repeat
      if ExtractFileExt('C:\test\' + sr.Name) = '.rte' then
        DeleteFile('C:\test\' + sr.Name);
    until FindNext(sr) = 0;
  FindClose(sr);
 end;
end;
иначе после проверки первого фаила цыкл закончица
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить кодировки файлов в текущей директории 4айник Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 27.04.2010 15:49
Программа получения списка файлов директории и изменения атрибутов файлов roma86 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 09.06.2009 09:08
Определение текущей директории Alex Cones Мультимедиа в Delphi 4 11.04.2009 12:32
Проверка наличия директории SANIOK_AV Общие вопросы Delphi 2 16.01.2008 11:05
Проверка существования директории Gorin Общие вопросы Delphi 7 25.11.2007 19:47