Топик с обсуждением качалки, прогрессбара и пр.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Decaz
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 30.09.2004 (Чт) 19:43
Откуда: Москва

Топик с обсуждением качалки, прогрессбара и пр.

Сообщение Decaz » 03.12.2005 (Сб) 23:16

А как изменить код, чтобы при скачивании в файл шла полоска ProgressBar?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.12.2005 (Вс) 1:29

А что конкретно непонятно? Прогрессбар на форму кинуть умеешь?
Изображение

Decaz
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 30.09.2004 (Чт) 19:43
Откуда: Москва

Сообщение Decaz » 04.12.2005 (Вс) 18:48

tyomitch писал(а):А что конкретно непонятно? Прогрессбар на форму кинуть умеешь?

да я почти сделал всё, только что-то коряво работает, может попробуешь оптимизировать код:
Код: Выделить всё
Private Sub Kachalka_Progress(ByVal Progress As Long, ByVal ProgressMax As Long, ByVal Status As Long, ByVal StatusText As String, Cancel As Boolean)
Dim sProgress As String
    If ProgressMax Then
        sProgress = Format(Progress / ProgressMax, "00")
    Else
        sProgress = "0"
    End If
    ProgressBar1.Value = sProgress
    DoEvents
    Cancel = SetCancel
End Sub

Decaz
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 30.09.2004 (Чт) 19:43
Откуда: Москва

Сообщение Decaz » 04.12.2005 (Вс) 20:50

При скачивании файла только 1 клеточка из всей полоски заполняется, хотя файл скачивается полностью...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.12.2005 (Вс) 21:47

:roll:
Код: Выделить всё
Private Sub Kachalka_Progress(ByVal Progress As Long, ByVal ProgressMax As Long, ByVal Status As Long, ByVal StatusText As String, Cancel As Boolean)
    If ProgressMax Then
        ProgressBar1.Value = 100! * Progress / ProgressMax
    Else
        ProgressBar1.Value = 0
    End If
    DoEvents
    Cancel = SetCancel
End Sub

Подходит?
Последний раз редактировалось tyomitch 04.12.2005 (Вс) 23:30, всего редактировалось 1 раз.
Изображение

Decaz
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 30.09.2004 (Чт) 19:43
Откуда: Москва

Сообщение Decaz » 05.12.2005 (Пн) 10:48

Огромнейшее спасибо! Благодарен!

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 24.12.2005 (Сб) 13:42

А как узнать размер файла перед закачкой? Очень надо!!!!

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 24.12.2005 (Сб) 14:09

Шлёшь винсоком спецательный HTTP запрос серваку и он тебе инфу выдаст. Или стартуешь закачку а потом при первом Progress смотришь ProgressMax(там размер) и закачку прерываешь.
Изображение

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 24.12.2005 (Сб) 14:14

Т.е. мне впринципи все равно каким способом качать мне просто надо перед закачкой узнать размер файла и если он , ну скажем больше 20МБ то скачать его, и желательно бы знать сколько скачано уже, ну типа в реальном времени.
Если не сложно то ответьте на мыло 618422@mail.ru

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 25.12.2005 (Вс) 2:01

Это вообще просто.Берешь Progress и переводишь(например в килобайты) если надо!
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 25.12.2005 (Вс) 2:03

А вот вопрос посложнее.Можно ли отправить запрос WinSockом на имя скачиваемого файла.Если можно то как????
#define ROFL 0xDDDD

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 25.12.2005 (Вс) 6:18

запросы вообще-то серверу адресовываются...
winsock1.send...
А как оно на самом деле - Х.З. !

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 25.12.2005 (Вс) 10:36

Это я и так понимаю.А вот как сделать запрос(дайте код) если это возможно, чтобы он тебе прислал имя скачиваемого файла? :?:
#define ROFL 0xDDDD

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.12.2005 (Вс) 13:05

В FAQ по теме GET/POST.
Lasciate ogni speranza, voi ch'entrate.

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 01.02.2006 (Ср) 5:28

А как работать через прокси????? Я так и не нашел в коде, ну может плохо искал???

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.02.2006 (Ср) 8:41

Обыкновенно.
Подключаешься не к хосту, а к прокси, и отправляешь на него чуть откорректированный запрос.
Lasciate ogni speranza, voi ch'entrate.

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 01.02.2006 (Ср) 10:06

Ну и как это сделать то??? Если можно исходник или...

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 01.02.2006 (Ср) 10:07

Ну и как это сделать то??? Если можно исходник или...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.02.2006 (Ср) 10:09

Исходник приведён.
А если ты не можешь указать адрес соединения, в этом тебе никто не поможет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 01.02.2006 (Ср) 10:30

Это адрес :
http://mirror3.garant.ru/cgi-bin/comple ... =garantkem

Это прокси:
192.168.0.2:3128

Что дальше???

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 01.02.2006 (Ср) 10:53

как и где прописать этот прокси?????

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 01.02.2006 (Ср) 18:35

keks-n писал(а):Шлёшь винсоком спецательный HTTP запрос серваку и он тебе инфу выдаст.

Код в студию :roll:

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Сообщение Brusco » 02.02.2006 (Чт) 5:57

Я посылал запрос серверу:

Код: Выделить всё
Winsock1.SendData "HEAD " & File & " HTTP/1.0" & vbCrLf & vbCrLf


На что получал ответ, где одним из параметров был размер файла.
Но т.к. запрос не полный некоторые сервера отказывались отвечать.

Подробней об HTTP тут:
http://www.09.msk.ru/http01.shtml

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 02.02.2006 (Чт) 6:15

Brusco писал(а):Я посылал запрос серверу:

Код: Выделить всё
Winsock1.SendData "HEAD " & File & " HTTP/1.0" & vbCrLf & vbCrLf


На что получал ответ, где одним из параметров был размер файла.
Но т.к. запрос не полный некоторые сервера отказывались отвечать.

Подробней об HTTP тут:
http://www.09.msk.ru/http01.shtml


ОК.
К томуже ты забыл указать некоторые обязатеьные параметры, например Host: и User-Agent:, Referer:
Последний раз редактировалось Wild VB Code for Food 03.02.2006 (Пт) 5:26, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2006 (Чт) 14:35

Wild VB Code for Food
А мне совсем не интересно видеть в твоей подписи 70 кб. картинок.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 02.02.2006 (Чт) 18:45

Похвалится нельзя? Ладно удалю.
Лучше думать чем жевать.

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Сообщение Brusco » 03.02.2006 (Пт) 3:09

Wild VB Code for Food писал(а):ГЫГЫГЫ. Вроде "HEAD" это конечно круто, попробуй заменить на "GET "
Рассмешил ей-богу, немогу!!!! Сейчас умру от смеха

К томуже ты забыл указать некоторые обязатеьные параметры, например Host: и User-Agent:, Referer:


Запрос "HEAD" вот как раз для получения заголовка (размер файла то нужен до закачки), а "GET" для получения всего файла!

Про параметры я ведь и написал, что не использовал их, т.к. реализовывал давно и некогда было возиться с HTTP, к тому же и так работало.
Поэтому я и дал ссылку с описанием.

Wild VB Code for Food раз ты такой специалист по протоколам, лучше бы кодик тогда и написал вместо обсуждения чужих ответов :!:

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 03.02.2006 (Пт) 6:26

Хм. Извиняюсь, я достаточно компетентен в области HTTP протокола, просто был в неадекватнов состоянии, :) думаю ты понимаешь про что я. :P


Код: Выделить всё
Dim header as String
header = "HEAD / HTTP/1.1" & vbCRLF & "Connection: close" & "Referer: www.microsoft.com" & vbCrLf & "Host: "& sHost & vbCrLf & "User-Agent: Mozilla/4.0(compatible; Sample)" &vbCrl & vbCrLf


Ответ

Код: Выделить всё
Option Explict
 
Dim buffer as string
Dim data() as string
Dim header() as string
Dim params() as string

ws.getdata buffer

data = split(buffer,vbCrlf & vbCrlf)

header = split(data(0),vbCrLf)

'ответ будет содержатся в header(0)

For i = 1 to UBound(header)-1
    params = split(header(i),":")
    Select Case LCase(Trim(params(0)))
       Case "content-length" 'то что нам нужно
            ....
        Case "content-type"
            ....
        Case "
    End Select
Next i



Кстате, полезно почитать:
http://www.kuzbass.ru/docs/http/1.1/rus/

Кстате, чтобы завоять своё хамство, держи, достал из древних завалов.
Вложения
TSTC.rar
Может поможет :)
(85.94 Кб) Скачиваний: 523

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 03.02.2006 (Пт) 9:26

Похоже на свой вопрос я так ответа и не получу..............
как же всетаки работать через прокси?

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 03.02.2006 (Пт) 9:27

Все просто, когда знаешь как это сделать блин а когда не знаешь даже самое простое кажется сложным

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 44

    TopList