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

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

Как ;в программе выполнить копирование файла?


Страницы:   1 2

MaGG ©   (2002-04-27 12:48:00) 

Как в программе выполнить копирование файла?


Vovchik   (2002-04-27 17:44:00) [1]

>Anatoly Podgoretsky
А кто вы чтобы мне тз давать? Почитайте SDK, там всё написано!

Вот нашёл пример в факах. Не проверял, но выглядит похоже.
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..128] of Char;
Begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, "h:\hook\*.*" );
StrPCopy( tobuf, "d:\temp\brief" );
With OpStruc DO Begin
Wnd:= Handle;
wFunc:= FO_COPY;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:= False;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
ShFileOperation( OpStruc );
end;

И почему обязательно один файл? Можно сколько угодно. Можно маски давать.


Anatoly Podgoretsky   (2002-04-27 15:16:00) [2]

Лучше сам напиши, и мы посмотрил как ты знаешь его и MaGG будет польза. Для тех задания в функцию передаем два параметра, откуда и куда типа string (каждый представляет только один файл)


Vovchik   (2002-04-27 15:01:00) [3]

Ну вот пристали! Щас раскопаю пример или сам напишу. Кроме того, разобраться надо один раз. А лёгких путей мы не ищем...


Anatoly Podgoretsky   (2002-04-27 14:57:00) [4]

Vovchik © (27.04.02 14:45)
Использование SHFileOperation не совсем тривиально, как кажется на первый взгляд, в хелпе много не понятного для начинающих.

MaGG (27.04.02 14:40)
Смотри еще раз совет от Johnmen © (27.04.02 14:44)


Vovchik   (2002-04-27 14:45:00) [5]

А чего там непонятного?
В Uses надо скорее всего ShellApi.


Johnmen   (2002-04-27 14:44:00) [6]

>MaGG : Почитай ветку еще раз и прими верное для тебя решение...


MaGG   (2002-04-27 14:40:00) [7]

Спасибо всем,
Так как првильно пользовать SHFileOperation ?
Из хелпа нихрена непонятно.
Можно примерчик на пальцах?
Что надо подкльчать в Uses?


Anatoly Podgoretsky   (2002-04-27 14:38:00) [8]

И еще добавить какое количество ошибок совершают при использовании SHFileOperation, а так чего нормальная функции не хуже CopyFile


Shell   (2002-04-27 14:24:00) [9]

Для винды, которая безусловно есть на машне юзера может использоваться альтернативный Shell, а родной может быть выдран с корнем


Vovchik   (2002-04-27 14:18:00) [10]

> Shell

Как это не быть шела? SHFileOperation сидит в Shell32.dll. А её не может не быть.
Может, вы скажете, что у юзера нет винды?


Johnmen   (2002-04-27 14:17:00) [11]

>Shell (27.04.02 14:11) :
Вполне здравое замечание !
И еще - может не быть Win, а быть Linux или Солярка или ... :)


Johnmen   (2002-04-27 14:13:00) [12]

"Как в программе выполнить копирование файла? "

CopyFile копирует ? Копирует !
А обсуждение достоинств и недостатков - отдельная тема :)
(я не призываю юзать именно CopyFile)


Shell   (2002-04-27 14:11:00) [13]

Вопрос в том, что shell"а у юзера может и не быть


Vovchik   (2002-04-27 14:08:00) [14]

Я так и не понял, в чём вопрос, если одна копирует медленно, а другая быстро...
Кроме того, CopyFile не умеет копировать права.


Johnmen   (2002-04-27 14:06:00) [15]

>Vovchik © :
Да я что , спорю что-ли ???????????!!!!!!!!!!!!
Я лишь утверждаю, что ...
>А разных функций для работы с файлами существет множество,
>и какая из них лучше или хуже - еще вопрос...


Vovchik   (2002-04-27 14:00:00) [16]

> Johnmen

Нет уж извиняйте, не вопрос. Проделайте простой эксперимент. Скопируйте большое количество файлов сначала при помощи CopyFile, а потом с помощью Експлорера (который использует SHFileOperation). Разницы в 10 раз не гарантирую, но раз в 5 будет точно. В качестве тестового набора файлов подойдёт дистрибутив ХР или 2К. Если копировать один очень большой файл - CopyFile опять же проигрывает, и тоже сильно. Этим объясняется то, что Far копирует намного медленнее, чем Експлорер или WindowsCommander.
По-моему, вопросов быть не может. Проверьте и убедитесь.

А CopyFile остался от 16-битной винды, и его не убрали, видимо, для совместимости со старыми программами.


Shell   (2002-04-27 13:56:00) [17]

А если юзер использует альтернативный shell в котором не реализован SHFileOperation?


Johnmen   (2002-04-27 13:51:00) [18]

>Vovchik © :
Так я же ничего не придумывал !
И неужели указанные ф-ии абсолютно бессмысленны ?
А разных функций для работы с файлами существет множество,
и какая из них лучше или хуже - еще вопрос...


MVVD   (2002-04-27 13:49:00) [19]

stt:= "C:\NameF.pas";
if FileExists(stt) then DeleteFile(PChar(stt));


Vovchik   (2002-04-27 13:45:00) [20]

> Johnmen
Зачем придумывать то, что не имеет смысла? Есть нормальная ф-ция, которая быстро копирует и удаляет файлы. Быстрее всё равно не сделаете. Если ради обучения - то пожалуйста! А ф-ция, предложенная MVVD, наверное будет работать, только зачем она нужна?


Страницы:   1 2

Наверх

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