Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / InternetReadFile - как прочесть двоичный файл? / 9 сообщений из 9, страница 1 из 1
25.06.2010, 17:10
    #36708803
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
Как прочесть двоичный файл?
Читаем текстовый в строковую переменную так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim sReadBuffer As String *  2048 
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
...
bDoLoop = True
While bDoLoop
  sReadBuffer = vbNullString
  bRet = InternetReadFile(hOpenURL, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
  If bRet =  0  Then ErrorOut Err.LastDllError, "InternetReadFile": GoTo  88 
  sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
  If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
Wend
...
А что делать, если файл архив или .exe (в общем не текстовый)?
...
Рейтинг: 0 / 0
25.06.2010, 17:20
    #36708833
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Dim FileNum As Integer
    Dim ok As Boolean
    Dim NumberOfBytesRead As Long
    Dim BUFFER As String
...

    Open FileName For Binary As FileNum
    fileIsOpen = True

    ' prepare the receiving buffer
    BUFFER = Space( 4096 )
     
    Do
        ' read a chunk of the file - returns True if no error
ok = InternetReadFile(hHttpOpenRequest, BUFFER, Len(BUFFER), NumberOfBytesRead)

        ' exit if error or no more data
        If NumberOfBytesRead =  0  Or Not ok Then Exit Do
         
        ' save the data to the local file
        Put #FileNum, , Left$(BUFFER, NumberOfBytesRead)
    Loop

только это вам не поможет.
...
Рейтинг: 0 / 0
25.06.2010, 17:20
    #36708834
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
Посунуть байтовый массив вместо sReadBuffer.
...
Рейтинг: 0 / 0
25.06.2010, 17:26
    #36708843
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
AntonariyПосунуть байтовый массив вместо sReadBuffer.

может и не пройти, но попробовать можно конечно. а чем URLDownloadToFile не устроил то? он как раз для любых файлов.
...
Рейтинг: 0 / 0
25.06.2010, 22:39
    #36709208
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
А он что-то зависает после принятия 150 ... 190 К.
Вообще-то я читаю через HTTP-прокси, но InternetReadFile читает ведь, только не двоичные файлы
...
Рейтинг: 0 / 0
25.06.2010, 22:45
    #36709219
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
А подсунуть байтовый массив думал, вот только не могу решить, что лучше - суммировать массивы в памяти через Redim или добавлять порции в двоичный файл. Нет ли здесь подводных камней?
...
Рейтинг: 0 / 0
26.06.2010, 08:57
    #36709382
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
Игорь С,

И правильно что зависает. Работает кач в том же потоке что и основное приложение. Поэтому пока не выкачается, работать с формой, да и вообще реакции на события не будут. Также у меня String прекрасно хранит двоичные данные.
...
Рейтинг: 0 / 0
29.06.2010, 13:26
    #36713094
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
Спасибо VSVLAD! (За отрезвляющий ответ).

Все прекрасно сохраняется в двоичный файл, а затем читается из него. Я ведь уже сохранял изображения в МЕМО полях и нормально (А зависало у меня после чтения по другой причине, по крайней мере так видится после выходных).
...
Рейтинг: 0 / 0
01.07.2010, 15:35
    #36718066
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InternetReadFile - как прочесть двоичный файл?
Добавлю, что была ошибка в объявлении функции из WinInet. Вместо ByVal написал ByRef и все заработало.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / InternetReadFile - как прочесть двоичный файл? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]