powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: как передать в параметрах типизированный массив?
9 сообщений из 9, страница 1 из 1
VB6: как передать в параметрах типизированный массив?
    #37873256
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть функция, считывает весь бинарный файл в массив:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Function ReadFeatures(ByVal strFile As String, ByRef pFeatureBuffer)
    Dim CurrByte As Byte
    Dim FileLength As Double
    Dim FileNum As Integer
    Dim CodeData_Cp As Double
    FileNum = FreeFile
    FileLength = FileLen(strFile)
    ReDim CurrBuff(FileLength) As Byte
    ReadFeatures = Int(FileLength / 256)
    
    Open strFile For Binary As FileNum
    Get #FileNum, 1, CurrBuff
    
    For I = 0 To FileLength - 1
        pFeatureBuffer(I) = CurrBuff(I)
    Next
    Close FileNum
End Function



Читаю файл я одной операцией, но т.к. не знаю, как правильно оформить передачу массива, приходится копировать через буферный массив CurrBuff. Можно этого как-то избежать?
Вызов процедуры такой:
Код: vbnet
1.
2.
3.
Dim pMatchBuffer(2560000)  As Byte

gpFingerNum = ReadFeatures(App.Path & "\" & PrmMatchFileName, pMatchBuffer)
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873270
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
Function ReadFeatures(...) As Byte()
    ...
    ReadFeatures = CurrBuff
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873273
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще многабукв

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Function ReadFileB(path As String) As Byte()
Dim r() As Byte
    Open path For Binary As #1
    ReDim r(LOF(1) - 1)
    Get #1, , r
    Close #1
    ReadFile = r
End Function
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873275
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ReadFile B = r
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873309
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Function ReadFileB(path As String) As Byte()
Dim f Byte
    f = FreeFile
    Open path For Binary As #f
    ReDim ReadFileB(LOF(f) - 1)
    Get #f, , ReadFileB
    Close #f
End Function
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873311
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Dim f as Byte



от руки писал, сорь
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873399
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, но это получается, нужно создавать новый массив, а в существующий нельзя передать? Хотя как вариант конечно, катит...
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873422
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, остановился на этом варианте, спасибо
...
Рейтинг: 0 / 0
VB6: как передать в параметрах типизированный массив?
    #37873531
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> это получается, нужно создавать новый массив, а в существующий нельзя передать?

Очень даже можно. Массив - параметр функции, а возвращает пусть результат: получилось или нет:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Function ReadFile(path As String, buf() As Byte) As Boolean
Dim f%
    On Error GoTo err_
    f = FreeFile
    Open path For Binary As #f
    ReDim buf(0 To LOF(f) - 1)
    Get #f, , buf
    Close #f
    ReadFile = True
ex_: Exit Function
    
err_: Resume ex_
End Function

Sub TestReadFile()
Const GOOD_PATH = "C:\winnt\system32\notepad.exe"
Const BAD_PATH = "c:\adqweded\wieudoie.bin"

Dim myByte() As Byte

'с проверкой результата
If ReadFile(GOOD_PATH, myByte) Then
    Debug.Print UBound(myByte)
Else
    Debug.Print "Не удалось прочитать файл " & GOOD_PATH
End If
If ReadFile(BAD_PATH, myByte) Then
    Debug.Print UBound(myByte)
Else
    Debug.Print "Не удалось прочитать файл " & BAD_PATH
End If

'без проверки
ReDim myByte(0 To 0)
Debug.Print UBound(myByte)
ReadFile GOOD_PATH, myByte
Debug.Print UBound(myByte)

End Sub
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: как передать в параметрах типизированный массив?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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