![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Я написал клиентское приложение, которое закачивает определенные файлы из сети клиенту на компьютер. И так вот, когда закачиваются маленькие файлы все хорошо, так как они быстренько закачиваются и пользователь видит, что они появляются на его компе в спец окошке которое я тоже сделал, чтобы пользователь мог следить за процессом копирования. Иначе дело обстоит когда файл большой. Программа как будто подвисает и блокирует все приложения(тем самым жутко пугая пользователя), а на самом деле она в фоне качает здоровенный файл. И так вот чтобы пользоваетль мог понять в чем дело и не скучал , хотелось бы выводить перед ним какой-нибудь индикатор закачки(загрузки) файла. Я знаю о существовании объекта ProgressBar. Но вот что и как использовать в данном случае я не знаю....
--------------------
Ner-zul |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
его родимого и юзай=) ProgressBar.Max - размер файла в байтах при получении файла ProgressBar.Position:=ProgressBar.Position+ByteRecieved; и Update; или Application.ProcessMessages; -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Как качаешь?
Если через Indy - брось на форму антифриз. Если нет, вынеси закачку в отдельный поток. |
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
to z-END:
А можешь просто кусок кода (пример) выложить, а то у меня что-то не очень выходит... to Snowy: Я использую функцию 'CopyFile(Sourc,Dest,False)'. А что такое 1)Indy ??? 2)Антифриз??? И как 3) Вынести закачку в отдельный поток??? --------------------
Ner-zul |
|||
|
||||
dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
Indy - компоненты доступа к сети, 'CopyFileEx юзай
Добавлено @ 11:51 CopyFileEx - там можно указать back-функцию с прогрессом -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Значит Indy тебе не нужно.
Что касается потока - поищи примеры на форуме по слову TThread. Также стоит вообще познакомиться с теорией многопоточности. |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
покажи свой код, кде и что невыходит.. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
У меня чето нет такой функции "CopyFileEx".... даже в хелпе.
И у меня вопрос как вставить апдейт прогресс бара именно в процесс копирования одного файла??? --------------------
Ner-zul |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
CopyFileEx - описание в Help -> Windows SDK
Но работает только в WinNT (в 9х не работает). Впрочем и незачем. TFileStream отлично для этого подходит. И даже поток отдельный создавать не нужно - только давать в промежутке между блоками Application.ProcessMessages. Хотя по честному лучше с потоками, но не обязательно. |
|||
|
||||
dvamaster |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
Заголовок Back-функции
Это сообщение отредактировал(а) dvamaster - 15.8.2006, 12:12 -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
||||||
|
|||||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
to Snowy
мне оч слложно понять что вы имеете ввиду " TFileStream отлично для этого подходит. И даже поток отдельный создавать не нужно - только давать в промежутке между блоками Application.ProcessMessages. " Как использовать TFileStream??? ![]() ![]() ![]() Дальше , между какими блоками Application.ProcessMessages его давать???? Простите, но мне совсем не понятно! Добавлено @ 12:28 to dvamaster if not CopyFileEx(Sourc,Dest, @MyCopyProgressRoutine, nil, ifcancel {если была отмена}, 0) then Вы не моглибы прокомментировать третий и пятый параметры???? Я совсем не понял что на их месте надо писать в моем случае.... --------------------
Ner-zul |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Твоё приложение использует Forms? Или чистый WinAPI?
|
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
мммм ну у меня там разные формы... ну объекты класса TForm
Аж 8 штук) --------------------
Ner-zul |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Вот, нарисовал пример копирования одного файла.
В примере Form1.ProgressBar1 - индикатор файла. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |