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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2009, 21:15   #1
hydrio
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 3
По умолчанию Помогите сделать ренеймер файлов

Нужна ваша помощь в вопросе: есть куча файлов (картинки) с именами наподобии DauntlessEscort.jpg (DrasticRevelation.jpg, DenyReality.jpg, ...). Нужен ренеймер, который вставил бы в них пробелы перед прописными буквами, чтобы получились отдельные слова: Dauntless Escort.jpg, Drastic Revelation.jpg, Deny Reality.jpg, ...

Я нашёл исходник проги, которая заменяет буквы верхнего регистра во всех файлах на буквы нижнего:
Код:
procedure DoIt(const Dir: string);
var
 SR: TSearchRec;
begin
 SetCurrentDir(Dir);
 if FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
 begin
   repeat
     if (SR.Name <> '.') and (SR.Name <> '..') then
     begin
       RenameFile(SR.Name, AnsiLowerCase(SR.Name));
       if (SR.Attr and faDirectory) <> 0 then
         DoIt(Dir + SR.Name + '\');
     end;
   until FindNext(SR) <> 0;
 FindClose(SR);
 end;
end;
Если можно его немного подправить для этой цели, будет здорово. Заранее спасибо.
hydrio вне форума Ответить с цитированием
Старый 29.06.2009, 22:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
procedure DoIt(const Dir: string);
var
  NewName, FileExt: string;
  SR: TSearchRec;
  i: integer;
begin
  SetCurrentDir(Dir);
  if FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        if (SR.Attr and faDirectory) = 0 then
        begin
          FileExt := ExtractFileExt(SR.Name);
          if Length(SR.Name) > Length(FileExt) then
          begin
            NewName := SR.Name[1];
            for i := 2 to Length(SR.Name) - Length(FileExt) do
            begin
              if SR.Name[i] in ['A'..'Z'] then NewName := NewName + ' ';
              NewName := NewName + SR.Name[i];
            end;
            NewName := NewName + FileExt;
            if NewName <> SR.Name then
              RenameFile(SR.Name, NewName);
          end;
        end
        else
          DoIt(Dir + SR.Name + '\');
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.06.2009, 23:10   #3
hydrio
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 3
По умолчанию

Огромное спасибо! И ещё вопрос: как реализовать эту процедуру? Сколько я не бился, Delphi выдаёт ошибку: not enough actual parameters. Вся процедура правильная, а красным он выделяет строку DoIt в событии, в котором я пытаюсь реализовать процедуру.

Последний раз редактировалось hydrio; 29.06.2009 в 23:16.
hydrio вне форума Ответить с цитированием
Старый 29.06.2009, 23:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, здрасте...
а вы не забываете передавать исходную директорую в процедуру DoIt ?!
например, так:
Код:
DoIt('C:\Мои документы\');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.06.2009, 00:09   #5
hydrio
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 3
По умолчанию

Да, всё работает отлично! Благодарю ещё раз, бился уже наверное неделю..
hydrio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ComboBox со списком файлов? Feurrader Microsoft Office Excel 2 28.02.2009 09:40
Из двух dat файлов сделать txt valdem Общие вопросы C/C++ 1 19.02.2009 19:33
Из двух dat файлов сделать txt valdem Помощь студентам 5 19.02.2009 17:21
Как сделать поиск файлов в папке BETONOMESHALKA Общие вопросы Delphi 3 01.02.2008 22:43
MediaPlayer - как сделать последовательное воспроизведение mp3 файлов (именно mp3) Kashp Компоненты Delphi 13 28.09.2007 08:38