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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 17:59   #1
ЮляЮлия
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 13
По умолчанию переименование файла

не подскажите как исправить вот такую проблему...когда я вызываю данную процедуру и переименовываю файл, то программа выводит,что файл перенесен,хотя файл переименован) эта процедура и перемещает и переименовывает, но когда я переименовываю файл пишет,что файл перенесен...помогите поправить код,пожалуйста
Код:
procedure Mv(comu:string); {Перенос и переименование файлов}
const rs = 512;
var keys,fname1,fname2,f:string;
      f1,f2:file;
      nr,nw:word;
      buf:array [1..rs] of char;
      i,r:boolean;
      yn:char;
Begin
 if error(comu) then exit;
 delete(comu,1,3);{Вырезаем команду из строки}
 if error(comu) then exit;
 keys:= '';
 if pos('-',comu) <> 0 then
  begin
   keys:= copy(comu,1,pos(' ',comu));
   delete(comu,1,pos(' ',comu));
  end;
 if pos('i',keys) <> 0 then i:= true
                       else i:= false;
 if pos('f',keys) <> 0 then r:= true
                       else r:= false;
 fname1:= copy(comu,1,pos(' ',comu) - 1);
 delete(comu,1,pos(' ',comu));
 fname2:= comu;
 if fname2[length(fname2)] = '\' then
  begin
   f:= fname1;
   while pos('\',f) <> 0 do
   delete(f, 1, pos('\',f));
   fname2:= fname2 + f;
  end;
 if fname1 = fname2 then
  begin
   writeln('Одинаковые имена файла источника и приемника!');
   exit;
  end;
{$i-}
assign (f1,fname1); reset (f1,1);
{$i+}
if ioresult <> 0 then
 begin
  writeln ('Файл - источник не найден!');
  exit;
 end;
assign (f2,fname2); {$i-} reset(f2); {$i+}
if (ioresult = 0) and (i or (not r)) then
 begin
  repeat
   write('файл ', fname2, ' уже существует. перезаписать? (y/n) ');
   readln(yn);
  until (yn) in ['y', 'n'];
if (yn) = 'y' then
rewrite(f2,1)
                    else
 begin
  close(f1); close(f2);
  exit;
 end;
 end
 else
 rewrite(f2,1);
 repeat
  blockread(f1,buf,rs,nr);
  blockwrite(f2,buf,nr,nw);
 until (nr = 0) or (nw <> nr);
close(f1); close(f2); erase(f1);
writeln ('Файл перенесен!');
End;

Последний раз редактировалось Stilet; 10.12.2013 в 18:30.
ЮляЮлия вне форума Ответить с цитированием
Старый 10.12.2013, 21:27   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Если пути отличаются - писать "перемещен", иначе - "переименован", видимо )
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переименование файла в цикле nicklan Win Api 4 25.02.2012 22:27
Переименование файла ZET78 PHP 1 09.08.2010 10:22
Переименование файла xakkkkker Общие вопросы Delphi 4 15.03.2010 13:51
переименование файла алексей209 Операционные системы общие вопросы 2 18.12.2009 18:03
Переименование файла Патрон Общие вопросы Delphi 17 09.04.2008 16:50