Member 11659960 Ответов: 1

Как мне найти заголовок в формате mp3 VB.NET


я не могу получить результат

в delphi я пишу эту функцию и могу ее получить

function getMP3Header(filename: string; pos: Integer): TMP3HeaderArray; 
var   filemp3: File;   
headerArray: TMP3HeaderArray;  
 count: integer; 
begin   
if FileExists(filename) then 
  begin    
 AssignFile(filemp3, filename);    
 FileMode:=fmOpenRead;    
 Reset(filemp3,1);     
seek(filemp3, pos);     
BlockRead(filemp3, 
headerArray, 4, count);    
 Result:=headerArray;     
CloseFile(filemp3);   
end else   
begin     
exit;  
end; 
end;


Что я уже пробовал:

я использую эту функцию в vb.net

Public mp3headerarray(0 To 3) As Byte

 Public Function GetMp3Header(ByVal filename As String, ByVal pos As Integer) As Byte()
Dim count As Integer
Dim result() As Byte
Dim headerarray = mp3headerarray

 If IO.File.Exists(filename) Then
            Using Stream As New FileStream(filename, FileMode.Open, FileAccess.Read)
                Stream.Seek(pos, SeekOrigin.Current)
                Stream.Read(headerarray, 0, 4)
                result = headerarray
                Stream.Close()
            End Using
        End If

         Catch ex As Exception
            MsgBox(ex.Message + "get Mp3 Header")
        End Try

        Return result
    End Function


говорят, что переменная result используется до того, как ей было присвоено значение
спасибо

[no name]

Поэтому назначьте ему значение. В чем именно заключается проблема?

1 Ответов

Рейтинг:
2

Jochen Arndt

Вы объявляете массив как

Dim result() As Byte
Тогда массив имеет значение Nothing. Но ваша функция возвращает эту переменную, и она не всегда устанавливается (она устанавливается только тогда, когда файл существует). Смотреть также Переменная '& lt;variablename> ' используется до того, как ей было присвоено значение | Microsoft Docs[^].

Чтобы избежать этого, вы можете создать Массив нулевой длины[^]:
Dim result(-1) As Byte