Главная страница
    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.006 c
1-1229112643
ivak
2008-12-12 23:10
2010.01.31
Собственный курсор


2-1260345866
grom
2009-12-09 11:04
2010.01.31
Базы данных


15-1259357418
Юрий
2009-11-28 00:30
2010.01.31
С днем рождения ! 28 ноября 2009 суббота


2-1260255749
IIIakal
2009-12-08 10:02
2010.01.31
Два условия в инструкции if


2-1260016231
AIK
2009-12-05 15:30
2010.01.31
не знаю как связать две таблицы ms sql server





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский