Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Два вопроса Добавлено: 19.04.08 22:51  

Автор вопроса:  derikkk
Всех приветствую.
Вопрос первый: есть ли другой способ дождатьс завершени какой-либо операции кроме
Do While bReady = False
DoEvents
Loop

Поскольку DoEvents хавает до 95% CPU Time :(
Вопрос второй:
itr = Internet Transfer Control
Private Sub itr_StateChanged(ByVal State As Integer)
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-сайт: www.rascalspb.narod.ru
 Профиль | | #1
Добавлено: 19.04.08 23:21
1 - многопоточность, которой в вб нету. раздбавь DoEvents Sleep'ами, в разумных пределах
2 - скачай файл и проверь с исходным на диске в winhex или win+R -> cmd -> fc.exe
посомтри откуда идут различия. да и примеры использования контрола тоже стоит погуглить

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 19.04.08 23:59
Мне доподлинно известно, что:
Declare Function GetQueueStatus Lib "user32" (ByVal qsFlags As Long) As Long

Public Sub DoEvents_()
    If GetQueueStatus(255) <> 0 Then DoEvents
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 20.04.08 00:47
А ты знаешь, что делает эта апишка вообще?)
Да и в цикле это мало поможет.

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 20.04.08 02:26
Знаю) хе
Апишка смотрит не стоят ли в очереди на выполнение какие-нибудь события (т.к. проверяются все события то флаг 255).
Ну и соответственно, лишний раз не вызывает DoEvents, а только когда надо.

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 20.04.08 02:30
против съедания 95% ЦПшного времени не поможет? совсем?=)

Ответить

Номер ответа: 6
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #6
Добавлено: 20.04.08 09:45
1.
Do While bReady = False
DoEvents
Loop


замени на
Do While bReady = False
DoEvents
Sleep 100
Loop


Если ты ждешь какого-то внешнего события, т.е. другой проги. Да и вообще, что вы паритесь - засунуть в таймер да и все)))

2.

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
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.
Open "C:\Test\File.mp3" For Binary Access Write As #intfile

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.
Open "C:\Test\File.mp3" For Binary Access Write As #intfile

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-сайт: domkratt.com
 Профиль | | #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-сайт: winandfx.narod.ru
 Профиль | | #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-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 20.04.08 20:54
на родине в городе P'ЛЂe}{...
\/ѓАѓў = VBD хехе
Вообще это всё реально раскодировать в понятный текст?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам