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

Код: 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
InternetReadFile - как прочесть двоичный файл?
    #36708833
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так:

Код: 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
InternetReadFile - как прочесть двоичный файл?
    #36708834
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посунуть байтовый массив вместо sReadBuffer.
...
Рейтинг: 0 / 0
InternetReadFile - как прочесть двоичный файл?
    #36708843
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПосунуть байтовый массив вместо sReadBuffer.

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

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

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


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