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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 11:13   #1
mayonezer1
Новичок
Джуниор
 
Регистрация: 14.06.2012
Сообщений: 2
По умолчанию Ищу альтернативы моей программе

Всем привет!
И я не студент, но мне определённо тоже требуется помощь.
На днях обнаружил большое количество музыки, которую нужно переименовать. Вручную переименовывать оч долго, нудно и не интересно. Вид названия "000 та та та.mp3" мне нужно удалить первых 4 символа вместе с пробелом. Я написал небольшую программу которая удаляла бы эти символы, но что то она работает некорректоно.

Вот пример процедуры:

Код:
procedure TForm1.ButtonReClick(Sender: TObject);
var
  f, y, Dir: string;
  i:Integer;
  searchResult:TSearchRec;
begin
  if FindFirst('*.mp3', faAnyFile, searchResult) = 0 then
   begin
    repeat
     f:=searchResult.Name;
     i:=Length(f);
     i:=i-4;
     y:=Copy(f,5,i);
     RenameFile(f, y);
    until FindNext(searchResult) <> 0;
   end;
   Close;
end;
и когда я включаю прогу она удаляет немного больше.
Вложения
Тип файла: rar Rename.rar (158.9 Кб, 6 просмотров)

Последний раз редактировалось ACE Valery; 14.06.2012 в 12:39.
mayonezer1 вне форума Ответить с цитированием
Старый 14.06.2012, 17:55   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

При пошаговом выполнении станет понятно, что программа делает ровно 1 лишний шаг (по крайней мере у меня так), т.е. 1 файл переименовывает 2 раза.

Сделал вот так (возможно, топорно):
Код:
procedure TForm1.ButtonReClick(Sender: TObject);
var
  f, y, Dir: string;
  i: Integer;
  searchResult: TSearchRec;
  filelist: tstringlist;
begin
  filelist := tstringlist.Create;
  if FindFirst('*.mp3', faAnyFile, searchResult) = 0 then
  begin
    repeat
      filelist.Add(searchResult.Name);
    until FindNext(searchResult) <> 0;
    FindClose(searchResult);
  end;
  for i := 0 to filelist.Count - 1 do
    renamefile(filelist[i], copy(filelist[i], 5, length(filelist[i]) - 4));
  filelist.Free;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.06.2012, 19:03   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Ищу альтернативы моей программе
Полно, вот примеры:
http://www.3dnews.ru/software-news/625666
http://toxicomaniac.ru/pereimenovani...e-it-your-way/
http://www.bestfree.ru/soft/file/rename.php
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.06.2012, 19:14   #4
mayonezer1
Новичок
Джуниор
 
Регистрация: 14.06.2012
Сообщений: 2
По умолчанию

Большое спасибо!
mayonezer1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пойму что неверно в моей программе? НеАдЕкВаТнАя Помощь студентам 1 28.03.2011 19:57
Составьте блок-схему к моей программе!С++ BlackEzh Помощь студентам 5 24.12.2010 16:22
Вызов процедур в моей программе Беллая Общие вопросы Delphi 6 21.08.2010 08:01
прокси в моей программе SHEI'TI Работа с сетью в Delphi 1 18.11.2006 19:11