Текущий архив: 2010.01.31;
Скачать: CL | DM;
Вниз
Посоветуйте. Копирование файлов. Найти похожие ветки
← →
oleg1963lora (2009-12-09 09:11) [0]Здравствуйте! Нужно скопировать файлы в лок. сети.
Файлы порядка 50-100 Мбайт. Очень хочется подцепить к этому делу
ProgressBar для визуализации процесса, но как это реализовать?
Копировать побайтово - за это время солнце погаснет.
← →
Рамиль © (2009-12-09 09:13) [1]
> Копировать побайтово - за это время солнце погаснет.
Копируй по 4 Кб.
← →
brother © (2009-12-09 09:14) [2]1. копировать надо блоками (в справке по BlockRead/BlockWrite) есть хороший пример, а прогресс вообще просто:
у прогресса min=0, max= filesize, progress = кол-во прочитаных блоков * размер блока
← →
oleg1963lora (2009-12-09 09:25) [3]Хорошая фунция, слов нет. А как быть с размером файла?
38 457 267 mod 128 (256, 1024 и тд.) <> 0 >:(((
Если только прочитать атрибуты исходного файла и записать их в целевой?
← →
brother © (2009-12-09 09:26) [4]ты о чем сейчас?
← →
Anatoly Podgoretsky © (2009-12-09 09:30) [5]> oleg1963lora (09.12.2009 09:11:00) [0]
Где твой код, что ли ты пробовал?
← →
MBo © (2009-12-09 09:39) [6]CopyFileEx позволяет прогресс прицепить
← →
oleg1963lora (2009-12-09 09:40) [7]
> brother © (09.12.09 09:26) [4]
> ты о чем сейчас?
Хотелось бы получить файл равным исходному.
Не только по содержанию, а и по виду (размер, дата последнего изменения и прочее ...
← →
oleg1963lora (2009-12-09 09:41) [8]
> MBo © (09.12.09 09:39) [6]
> CopyFileEx позволяет прогресс прицепить
Спасибо, сейчас попробую.
← →
Плохиш © (2009-12-09 10:40) [9]Всё-таки придётся программиста нанимать.
← →
oleg1963lora (2009-12-09 11:23) [10]Сам с усами! Спасибо MBo, нашел описание функции CopFileEx и примерчик:
function Progress(TotalFileSize,
TotalBytesTransferred,
StreamSize,
StreamBytesTransferred:LARGE_INTEGER;
dwStreamNumber,
dwCallbackReason:DWORD;
hSourceFile,
hDestinationFile:THandle;
lpData:pointer):DWORD; stdcall;
begin
Form1.ProgressBar1.Position:=
Round((TotalBytesTransferred.QuadPart/TotalFileSize.QuadPart)*100);
result:=PROGRESS_CONTINUE;
Form1.ProgressBar1.Position:=0;
end;
и собственно копирование
CopyFileEx(PChar(SourceFile),PChar(TargetFile),@Progress,nil,nil,0);
Тих и счастлив как пописавший малыш :-)))
Кстати много интересной информации нашел на
http://h-ahmet.narod.ru/source.htm. Загляните между делом
← →
MBo © (2009-12-09 13:16) [11]Аккуратнее будет не использовать Form1 напрямую, а передавать через lpData форму или ProgressBar.
И непонятно, зачем Position сначала устанавливать, потом в 0 сбрасывать
← →
oleg1963lora (2009-12-09 15:07) [12]
> И непонятно, зачем Position сначала устанавливать, потом
> в 0 сбрасывать
Типа: "УСЁ блин.Я-а-а,Ик.Скопировалась!" :-)
И подскажите пожалуйста где можно почитать про IpData. Судя по IP это
указатель на данные. А дальше?
← →
MBo © (2009-12-09 16:14) [13]>это указатель на данные
Это возможность передать некую информацию.
Поскольку тип указатель, то можно присвоить нужный объект, чего в данном случае достаточно.
Если нужно много информации передавать, то указатель на данные.
Если одно число - то его можно привести к типу указателя.
Страницы: 1 вся ветка
Текущий архив: 2010.01.31;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c