Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Копирование файлов по списку   Найти похожие ветки 

 
Steep ©   (2006-09-12 08:19) [0]

Можете привести код копирования файлов по списку List или из файла (я думаю что в принципе это одно и тоже)
Желательно в отдельном потоке или методом windows

Рассматривал различные примеры, но там либо копирование 1 файла или копирование папки


 
Steep ©   (2006-09-12 08:21) [1]

Заранее спасибо за ответы!


 
MBo ©   (2006-09-12 08:21) [2]

в FAQ, искать ShFileOperation


 
Steep ©   (2006-09-12 08:26) [3]

в FAQ токо копирование папки с подкаталогами и удаление в корзину :(


 
MBo ©   (2006-09-12 08:33) [4]

Там примеры использования, а описание функции и SHFILEOPSTRUCT смотри в MSDN, обратив внимание на pFrom и pTo

кроме того, раз ты знаешь, как копировать один файл, ничего не мешает сделать это в цикле для множества имен файлов.


 
Steep ©   (2006-09-13 07:45) [5]

Вобщем копирование из файла по списку я замутил..! :)
 Осталось 2 проблемы
1. мне нужно чтобы если копируется больше указанного размера, то копирование прекращалось.
2. В зависимости от выбранного типа действия: либо копировалось, либо перемещалось, либо удалялось
{как я понял FO_COPY достаточно заменить на FO_MOVE, FO_DELETE
примерный код такой
---~Начало~----
var
i : integer;
s : TStringList;
Fo:TSHFileOpStruct;
buffer: array[0..4096] of char;
p:pChar;
Begin
s.TStringList.Create;
s.LoadFromFile(ExtractFilePath(application.ExeName)+"files.txt");
FillChar(Buffer, size of (Buffer), #0);
p:=@buffer;
for i:=0 to s.count-1 do p:=StrECopy(p, PChar(s.strings[i]))+1;
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd:=handle;
///Пробный код с кейсом
case ComboBox.item of (не помню точно, короче выбранный)
0: Fo.wFunc:=FO_COPY //Копирование;
1: Fo.wFunc:=FO_MOVE //Перемещение;
2: Fo.wFunc:=FO_DELETE //Удаление;
end;
//конец
Fo.pFrom:=@buffer;
Fo.pFo:=pChar(editPath.text);
Fo.tFlags:=0;
if ((SHFileOperations(Fo)<>0) or (Fo.AnyOperationsAborted<>false)) then Showmessage("Aborted");//кстати почему если убираешь эту строку, то не работает?
---~Конеч~----
Но когда я делаю с кейсом вылазит ошибка(причем уже в компилянной проге..) Без кейса все нормально работает..}


 
Думкин ©   (2006-09-13 07:53) [6]

> case ComboBox.item of (не помню точно, короче выбранный)

Так и весь код по памяти? В том что написано - ошибка, почему ее не может быть и в другом?


 
Steep ©   (2006-09-13 08:01) [7]

остальное я переписал :) {на букмажку :) }
Просто остальной код с рабочей проги, которая токо копирует.


 
Steep ©   (2006-09-13 09:36) [8]

Просто писать отдельно весь код на каждое действие не есть хороше или все-же придется?


 
Amoeba ©   (2006-09-13 13:02) [9]

Хорошую статью (на русском) об использовании ShFileOperation найдешь на http://www.delphikingdom.com


 
Steep ©   (2006-09-14 08:04) [10]

вроде разобрался там списке были файлы, которые были удалены, только как проверить есть ли файл?
И всеже остаеться вопрос:

> 1. мне нужно чтобы если копируется больше указанного размера,
>  то копирование прекращалось.


 
Думкин ©   (2006-09-14 08:09) [11]

> Steep ©   (14.09.06 08:04) [10]


> MBo ©   (12.09.06 08:33) [4]
> кроме того, раз ты знаешь, как копировать один файл, ничего
> не мешает сделать это в цикле для множества имен файлов
.
>


 
Elen ©   (2006-09-14 08:13) [12]


> > 1. мне нужно чтобы если копируется больше указанного размера,
> >  то копирование прекращалось.

Ты что хочеш определять размер во время копирования? Ты работаеш для локалки? Это что - у тебя с трафиком проблемы что-ли?


 
Steep ©   (2006-09-14 08:28) [13]


> Ты что хочеш определять размер во время копирования? Ты
> работаеш для локалки? Это что - у тебя с трафиком проблемы
> что-ли?

нет я хочу копировать песни, допустим на диск ставлю 700 мб
или флешка 256 мб, тогда на 256 и т.д.
> Думкин ©


Копирование в цикле я сделал:

> for i:=0 to s.count-1 do p:=StrECopy(p, PChar(s.strings[i]))+1;


 
Elen ©   (2006-09-14 08:38) [14]


> Steep ©

Ты на компакт режеш или с него? Чем коммандер не устраивает? И причем тут большие размеры?


 
Steep ©   (2006-09-14 08:45) [15]


> Ты на компакт режеш или с него?

Может да а может просто другу дописать 100 мб на компашку или на винт пару гигов кинуть и тд.

> Чем коммандер не устраивает?

Хочу написать свою прогу! ИМХО свое ближе к телу :)

> И причем тут большие размеры?

Объяняю суть проги есть плейлист, я делаю из него список файлов и в зависимости от желания и потребностей совершаю какие-либо действия над этими музыкальными файлами (или клипаками, фильмами!)


 
Elen ©   (2006-09-14 08:50) [16]


>  как проверить есть ли файл?

If FileExist(имя файла) then он есть.
А если он есть до копирования применяй GetFileSize или FindFirst - это даст тебе размер и определяй копить тебе яго али не...


 
Steep ©   (2006-09-14 08:52) [17]

Большое Спасибо!!!
Я это и искал!


 
Elen ©   (2006-09-14 08:59) [18]


> Steep ©

Ты лучше пастарайся написать такой плагин к WinAmp... Это будет клас... :-)


 
Думкин ©   (2006-09-14 09:00) [19]

> Steep ©   (14.09.06 08:28) [13]

ТО есть вы считаете, что копирование происходит в этот момент?


 
Steep ©   (2006-09-14 09:09) [20]


> ТО есть вы считаете, что копирование происходит в этот момент?

нет идет забивание списка файлов буфер
По мне это наверное лучше

> Ты лучше пастарайся написать такой плагин к WinAmp... Это
> будет клас... :-)

Еслиб я знал как, тогда да...
А пока я даж делфи нормально не знаю...

Еще последний вопросик, а можно это (копирование) загнать в отдельный поток, чтоб форма продолжала отвечать на команды?


 
Elen ©   (2006-09-14 09:12) [21]


> Steep ©

Кажись CreateRemoteThread... В общем порули в эту степь по SDK


 
Steep ©   (2006-09-14 09:17) [22]


> порули в эту степь по SDK

??? это как..
Я просто самоучка вот нормально ничего и не знаю...
Ксатати MSDN смотреть на сайте Microsodt"a?


 
Elen ©   (2006-09-14 09:31) [23]


> Steep ©

[Delphi]\Common Files\Borland Shared\MSHelp\WIN32SDK.HLP Там API.
Эта справка кстати должна быть интегрирована в Хелп Делфи...
Ну можеш и MSDN.


 
Steep ©   (2006-09-14 09:35) [24]

Потом может и плагин для Вампа создам! С вашей помощью ;)
Спасибо всем!


 
Думкин ©   (2006-09-14 09:48) [25]

> Steep ©   (14.09.06 09:35) [24]

Если уж про потоки, то сюда для начала:
"..\Program Files\Borland\Delphi7\Demos\Threads"



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.076 c
10-1123870709
mufan
2005-08-12 22:18
2006.10.01
Отчет в Word


2-1158053185
ice321
2006-09-12 13:26
2006.10.01
SQL запрос


15-1157838035
Ketmar
2006-09-10 01:40
2006.10.01
google.com


1-1156256825
Sergio77
2006-08-22 18:27
2006.10.01
из TWebbrowser в Memo


1-1156232959
Arkano
2006-08-22 11:49
2006.10.01
Находится ли точка в шестиугольнике