Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

:-) Анатомия копирования


Doom-2 ©   (2007-05-11 15:10:00) 

Копирую так:
procedure TFormMain.CopyF(copyFrom, copyTo: string);
const
BufSize = 3*4*4096;
type
PBuffer = ^TBuffer;
TBuffer = array [1..BufSize] of Byte;
var
f1, f2: file;
Size, SizeDone: integer;
Buffer: TBuffer;
begin
SizeDone:=0;
AssignFile( f1, copyFrom );
AssignFile( f2, copyTo );
Reset( f1, 1 );
Rewrite( f2, 1 );
Size := FileSize( f1 );
ProgInStat.Max := Size;
repeat
 BlockRead( f1, Buffer, BufSize, Size );
 Inc( SizeDone, Size );
 ProgInStat.Position := SizeDone;
 BlockWrite( f2, Buffer, Size );
 Application.ProcessMessages;
until Size < BufSize;
 Self.Close;
end;

procedure CreateDirect(Const Name : String);
begin
If (DirectoryExists(Name))or(Length(Name) <= 0)then
Exit;
CreateDirect(ExtractFileDir(Name));
CreateDir(Name);
end;

procedure TFormMain.DirCopy(Const InName, OutName : String);
Var SS : TSearchRec;
   Result: Integer;
begin
 CreateDirect(OutName);
  Result :=FindFirst(InName + '\*.*', faAnyFile, SS);
  While (Result=0) do begin
   If (SS.Name <> '.') and (SS.Name <> '..')
    then FormMain.CopyF(IncludeTrailingPathDelimiter(InName)+SS.Name,
     IncludeTrailingPathDelimiter(OutName)+SS.Name);
   Result :=FindNext(SS);
  end;
  FindClose(SS);
  ProgInStat.Position := 0;
end;

Всё работает, пока не начинаешь копировать с сетевого диска на локальный!
Компилятор останавливается на строке:
Reset( f1, 1 );и пишет, что нет доступа к файлу (причём не пишет к какому)

Как это исправить? (чтобы он стал копировать отовсюду)
Как можно было бы добавить параметр (boolean) - копирование только изменившихся файлов?


Anatoly Podgoretsky   (2007-05-11 16:31:00) [1]

> Doom-2  (11.05.2007 15:57:06)  [6]

Одназначно говорит - нет прав


Doom-2   (2007-05-11 15:57:00) [2]

Лишний раз ради принипа запустил....
"File access denied"


Правильный Вася   (2007-05-11 15:53:00) [3]

это на анатомия, это проктология


> Почему с сетевого каталога копировать не хочет?

пути неверные


Doom-2   (2007-05-11 15:53:00) [4]

10 раз проверил - верные!


Doom-2   (2007-05-11 15:41:00) [5]

> Компилятор останавливается на строке:
Не может подобного компилятор сообщать

ну программа!

Почему с сетевого каталога копировать не хочет?


MBo   (2007-05-11 15:26:00) [6]

CopyFileEx используй или SHFileOperation. Зачем руками куски колбасить?


Anatoly Podgoretsky   (2007-05-11 15:20:00) [7]

> Doom-2  (11.05.2007 15:10:00)  [0]

> Компилятор останавливается на строке:

Не может подобного компилятор сообщать


Наверх

Титульная страница Поиск, карта сайта Написать письмо