Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизКопирование файлов по списку Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.013 c