Страница: 1 | 2 |
Вопрос: Два вопроса
Добавлено: 19.04.08 22:51
Автор вопроса: derikkk
Всех приветствую.
Вопрос первый: есть ли другой способ дождатьс завершени какой-либо операции кроме
DoEvents
Loop
Поскольку DoEvents хавает до 95% CPU Time :(
Вопрос второй:
itr = Internet Transfer Control
Select Case State
Case icResponseCompleted '12
Open "C:\Test\File.mp3" For Binary Access Write As #intfile
vtData = itr1.GetChunk(1024, icByteArray)
Do While LenB(vtData) > 0
Put #intfile, , vtData
vtData = itr1.GetChunk(1024, icByteArray)
Loop
Put #intfile, , vtData
Close #intfile
End Select
End Sub
Если происходит закачка текстового файла (пробовал HTML), то всё ОК, зрительно всё на месте, файл читабелен, а если бинарника (mp3 например), то результирующий файл не играется. WMP 10 говорит, что не может инициализировать файл. Открывал редактором, смотрел, ID3 на месте, а дальше не разберешь... Если качать Download Master'ом или просто браузером, то всё ОК. Есть мысли по этому поводу? Заранее всем спасибо за ответы.
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #1
Добавлено: 19.04.08 23:21
1 - многопоточность, которой в вб нету. раздбавь DoEvents Sleep'ами, в разумных пределах
2 - скачай файл и проверь с исходным на диске в winhex или win+R -> cmd -> fc.exe
посомтри откуда идут различия. да и примеры использования контрола тоже стоит погуглить
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 19.04.08 23:59
Мне доподлинно известно, что:
Public Sub DoEvents_()
If GetQueueStatus(255) <> 0 Then DoEvents
End Sub
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 20.04.08 00:47
А ты знаешь, что делает эта апишка вообще?)
Да и в цикле это мало поможет.
Номер ответа: 4
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 20.04.08 02:26
Знаю) хе
Апишка смотрит не стоят ли в очереди на выполнение какие-нибудь события (т.к. проверяются все события то флаг 255).
Ну и соответственно, лишний раз не вызывает DoEvents, а только когда надо.
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 20.04.08 02:30
против съедания 95% ЦПшного времени не поможет? совсем?
Номер ответа: 6
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #6
Добавлено: 20.04.08 09:45
1.
DoEvents
Loop
замени на
DoEvents
Sleep 100
Loop
Если ты ждешь какого-то внешнего события, т.е. другой проги. Да и вообще, что вы паритесь - засунуть в таймер да и все)))
2.
Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
If lngRetVal = 0 Then DownloadFile = True
End Function
Предупреждение: на момент скачивания программа подвисает.
Номер ответа: 7
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #7
Добавлено: 20.04.08 09:45
В смысле во время скачивания
Номер ответа: 8
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #8
Добавлено: 20.04.08 10:52
1. Многопоточность, которая есть даже в VB6 (дам пример если надо)
2. Вероятнее всего, файл ты зписываешь "For Output", т.е. как текст. а MP3 и т.д. это уже Binary. так что пиши все в бинари, но только через юникод.
Номер ответа: 9
Автор ответа:
derikkk
Вопросов: 1
Ответов: 4
Профиль | | #9
Добавлено: 20.04.08 11:34
AgentFire:
1. „E„ѓ„|„y „~„u „x„p„„„‚„…„t„~„y„„, „t„p„z „Ѓ„|„y„x))
2.
Ra$cal, \/ѓАѓў:
Sleep'„Ќ „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„ђ, „ѓ„Ѓ„p„ѓ„y„q„Ђ.
\/ѓАѓў:
„P„‚„Ђ „ѓ„y„~„‡„‚„Ђ„~„~„Ќ„z „}„u„„„Ђ„t „x„p„{„p„‰„{„y „x„~„p„ђ. „P„‚„Ђ „„„Ђ, „‰„„„Ђ „Ѓ„‚„Ђ„s„p „~„p „Џ„„„Ђ „r„‚„u„}„‘ „r„u„Љ„p„u„„„ѓ„‘ „„„Ђ„w„u „x„~„p„ђ... „V„Ђ„„„u„|„Ђ„ѓ„Ћ „q„Ќ, „‰„„„Ђ„q „~„u „r„u„Љ„p„|„p„ѓ„Ћ))
Winand:
GetQueueStatus „„„Ђ„w„u „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„ђ.
Номер ответа: 10
Автор ответа:
derikkk
Вопросов: 1
Ответов: 4
Профиль | | #10
Добавлено: 20.04.08 11:34
AgentFire:
1. „E„ѓ„|„y „~„u „x„p„„„‚„…„t„~„y„„, „t„p„z „Ѓ„|„y„x))
2.
Ra$cal, \/ѓАѓў:
Sleep'„Ќ „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„ђ, „ѓ„Ѓ„p„ѓ„y„q„Ђ.
\/ѓАѓў:
„P„‚„Ђ „ѓ„y„~„‡„‚„Ђ„~„~„Ќ„z „}„u„„„Ђ„t „x„p„{„p„‰„{„y „x„~„p„ђ. „P„‚„Ђ „„„Ђ, „‰„„„Ђ „Ѓ„‚„Ђ„s„p „~„p „Џ„„„Ђ „r„‚„u„}„‘ „r„u„Љ„p„u„„„ѓ„‘ „„„Ђ„w„u „x„~„p„ђ... „V„Ђ„„„u„|„Ђ„ѓ„Ћ „q„Ќ, „‰„„„Ђ„q „~„u „r„u„Љ„p„|„p„ѓ„Ћ))
Winand:
GetQueueStatus „„„Ђ„w„u „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„ђ.
Номер ответа: 11
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #11
Добавлено: 20.04.08 11:39
AgentFire, нормально многопоточность работает только в пикоде. И о не всегда
Номер ответа: 12
Автор ответа:
derikkk
Вопросов: 1
Ответов: 4
Профиль | | #12
Добавлено: 20.04.08 11:55
Fignya kakaya-to...
Koroche,vse poprobuyu))
Fail dlya zapisi otkryvayu kak Binary Access Write.
AgentFire: esli ne trudno, kin' pliz na derikkk[sobaka]yandex.ru))
Номер ответа: 13
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #13
Добавлено: 20.04.08 20:28
нда.. никогда не говорите derikkk - пиши по-русски
Номер ответа: 14
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #14
Добавлено: 20.04.08 20:41
Может на его родине наша раскладка уже не в авторитете ...
Номер ответа: 15
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #15
Добавлено: 20.04.08 20:54
на родине в городе P'ЛЂe}{...
\/ѓАѓў = VBD хехе
Вообще это всё реально раскодировать в понятный текст?