Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1257757458
Alx2
2009-11-09 12:04
2010.01.31
Умер Гинзбург


2-1260262105
ford
2009-12-08 11:48
2010.01.31
TidHTTP прервать по таймауту


2-1260092211
HRustBB
2009-12-06 12:36
2010.01.31
Внимание! Тест на интуицию :)


15-1259186890
Германн
2009-11-26 01:08
2010.01.31
Мультизагрузка, boot.ini и иже с ними.


2-1260352002
Жужузу
2009-12-09 12:46
2010.01.31
Запутался в объектах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский