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

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

Копирование файлов [D6, Win2k, WinXP]


Diller ©   (2005-09-01 08:59:00) 

Доброго времени суток! Прошу помочь с одной проблемой:
Мне нужно сделать программу одной из функций которой будет синхронизация файлов в различных папках. Во время рботы сттолкнулся с тем, что в Delphi отсутсвует процедура копирования файлов, а в ShellApiпроцедура CopyFileотказывается работать с String. Если сможете помочь - буду очень благодарен.


parashutist   (2005-09-14 11:54:00) [1]

Удалено модератором
Примечание: Задай вопрос в своей ветке


wal   (2005-09-01 10:01:00) [2]


> синхронизация файлов в различных папках
> Win2k, WinXP
Может стоит подумать о HardLink'ах на NTFS'е

С уважением.


alex_***   (2005-09-01 09:12:00) [3]

ого... лихо. А просто вызвать CopyFile(PChar(src), PChar(dest), true) ?


Digitman   (2005-09-01 09:10:00) [4]


> в Delphi отсутсвует процедура копирования файлов


чтой-то вдруг ?
та самая CopyFile - она ж не на Луне, она  - в Делфи !


> процедура CopyFile отказывается работать с String


это не процедура, а функция.

MyBoolResult := CopyFile(PChar(MyStringVariable),  ...);


Goga   (2005-09-01 09:08:00) [5]


Windows
function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;
begin
 F.Wnd := 0; F.wFunc := FO_COPY;
 FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
 ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
 F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
 result:=ShFileOperation(F) = 0;
end;  

поток

Procedure FileCopy(Const SourceFileName, TargetFileName: String);
Var
 S,T   : TFileStream;
Begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
 T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
 try
   T.CopyFrom(S, S.Size ) ;
   FileSetDate(T.Handle, FileGetDate(S.Handle));
 finally
  T.Free;
 end;
finally
 S.Free;
end;
end;

String --> PChar  
Var S: String;
   P: PChar;

P:=PChar(S);


Наверх

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