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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 11:51   #1
nice.name
Новичок
Джуниор
 
Регистрация: 09.01.2013
Сообщений: 2
По умолчанию программа, которая должна находить в данной директории *.xml файлы и переименовывать в *.xml.dt. (Delphi)

Доброго времени суток. Вообщем есть программа, которая должна находить в данной директории *.xml файлы и переименовывать в *.xml.dt. Но она не переименовывает. Что сделал не так?

код программы:

Код:
uses
  SysUtils;

Var s:string;

procedure DoIt(Dir: string);
var
  SR: TSearchRec;
begin
  SetCurrentDir(Dir);
  if FindFirst(Dir + '*.xml', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        RenameFile(SR.Name, SR.Name + '.dt');
      end;
    until FindNext(SR) <> 0;
  FindClose(SR);
  end;
end;

begin
  s:=GetCurrentDir;
  DoIt(s);
end.


___________
1) Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться,
а автор такой темы получать штрафы.

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

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.01.2013 в 15:11.
nice.name вне форума Ответить с цитированием
Старый 09.01.2013, 15:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, для работы вашей процедуры совершенно не нужно делать каталог текущим. строчка с SetCureentDir - лишняя (избыточная)!

а во-вторых, функция GetCurrentDir возвращает путь БЕЗ слеша.
поэтому нужно вызывать вашу функцию так:
Код:
DoIt( GetCurrentDir + '\');
или, ещё лучше, в самой процедуре написать так:
Код:
procedure DoIt(Dir: string);
var
  SR: TSearchRec;
begin
  Dir := IncludeTrailingBackslash(Dir);
  if FindFirst(Dir + '*.xml', faAnyFile, SR) = 0 then
....

p.s. код не проверял. пишу прямо в браузере!

p.p.s. отладку ещё никто не отменял - пройдитесь по вашей процедуре в отладке, посмотрите, что и как..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2013, 15:40   #3
nice.name
Новичок
Джуниор
 
Регистрация: 09.01.2013
Сообщений: 2
По умолчанию

сделал бэкслэш, все работает! =)) спасибо!
nice.name вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа должна находить минимум функции нескольких переменых Pashok7 Помощь студентам 1 05.04.2011 15:46
сформировать xml-файл на основе другого xml-файла NieL Общие вопросы Delphi 2 21.12.2010 15:49
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18
Как переименовывать,перемещать, удалять, копировать файлы в delphi 2009? motaro Общие вопросы Delphi 9 18.08.2009 20:38
XML файлы Tirendus Общие вопросы по программированию, компьютерный форум 16 28.05.2009 15:00