Всё, что связано с Progressbar в Visualbasic

BlackShadow

Well-Known Member
04.02.2011
111
3
25
Россия, Тольятти
#1
Вот исходник.

Посмотреть вложение ___________________.rar

Не знаю, почему, но он ругается на строку:

Код:
ProgressBar1.Value = ProgressBar1.Value + FileLoadSize
в общем коде для таймера (я использую ProgressBar для загрузки файлов):

Код:
Private Sub Timer1_Timer()

Timer1.Enabled = True
Status.Visible = True
ProgressBar1.Visible = True

If CommonDialog1.FileName <> "" Then
FileMaxSize = FileLen(CommonDialog1.FileName) / 1024
FileMaxSize = Format(FileMaxSize, "0.00")
InfoFile.Caption = "Путь файла: " & CommonDialog1.FileName & "Размер: " & FileMaxSize

intFH = FreeFile									'свободное имя
Open CommonDialog1.FileName For Input As intFH	 'открываю с помощью диалога
Do Until EOF(intFH)								 'считываю файл
Line Input #intFH, strString						'строки считывания
Txt = Txt & strString & vbCrLf		'присвоение данных переменной и вставление переноса на новую строку
FileLoadSize = Len(Txt) / 1024	  'размер загруженной строки
FileLoadSize = Format(FileLoadSize, "0.00")	'округляю до килобайт
ProgressBar1.Max = FileMaxSize  'присвоение макс.значения прогрессбара
ProgressBar1.Value = ProgressBar1.Value + FileLoadSize	'присвоение настоящего значения прогрессбара
Percent = Fix(ProgressBar1.Value / ProgressBar1.Max * 100)  'создаю процент загрузки
Status.Caption = "Загрузка файла: " & ProgressBar1.Value & "Кб из " & ProgressBar1.Max & "Кб (" & Percent & "%)"

If ProgressBar1.Value >= ProgressBar1.Max Then
Timer1.Enabled = False
Status.Visible = False
ProgressBar1.Visible = False
TxtArea.Text = Txt
End If

Loop
Close #intFH
End If
End Sub

Если не трудно - просмотрите исходник, протестируйте ФАЙЛ - ОТКРЫТЬ ДОКУМЕНТ
и выбрав ЛЮБОЙ файл (абсолютно), то увидите, что последние килобайты не догружает и говорит, типа неправильная строка в этой строке

Код:
ProgressBar1.Value = ProgressBar1.Value + FileLoadSize
Помогите, пожалуйста, решить проблему
 
A

AndrewSpider

Гость
#2
Код:
ProgressBar1.Value = ProgressBar1.Value + FileLoadSize
ProgressBar1 надо не килобайтах, а прямо в байтах, который возвращает функция FileLen() и len(). Скорее всего при деление на 1024 число округляется и поэтому последняя часть не влазит
ProgressBar1.Value не может быть больше ProgressBar1.Max
 
A

AndrewSpider

Гость
#3
Вот мой вариант, бинарно только считываю;D
 

Вложения

  • 3.4 КБ Просмотры: 9