Hallo,
habe ein Problem mit dem auslesen der Länge von Mp3 Dateien. Wenn ich nur eine einzelne Datei auslesen funktioniert alles bestens aber sobald ich Datei für Datei von einem Verzeichnis auslese hängt er nach einer bestimmten Zeit auf.
Habe den Fehler jetzt mal versucht abzufangen und bekomme folgende Meldung
"Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."
Hab die Vermutung das der Speicher nach auslesen der Datei nicht korrekt wieder freigegeben wird.
Hier mal der entscheidende Code, den Rest kann ich auch gerne nachliefern.
Imports System
Imports System.Collections.Generic
Imports System.Text
Public Class Form1
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Integer, _
ByVal hwndCallback As Integer) As Integer
Private Declare Function GetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, _
ByVal cchBuffer As Integer) As Integer
Private Function GetMP3Length(ByVal strFileName As String) As Double
Dim strBuffer As String
Dim lRet As Long
Dim sReturn As String
Try
' Da die mciSendString Funktion mit langen Dateinamen
' nicht korrekt arbeitet, muss zuvor der kurze
' 8.3 Dateiname der MP3-Datei ermittelt werden.
strBuffer = Space(255)
lRet = GetShortPathName(strFileName, strBuffer, Len(strBuffer))
If lRet <> 0 Then
strFileName = Microsoft.VisualBasic.Left(strBuffer, InStr( _
strBuffer, vbNullChar) - 1)
End If
' MP3-Datei öffnen
mciSendString("open " & strFileName & _
" type MPEGVideo alias mp3audio", CStr(0), 0, 0)
' Länge der Datei in Millisekunden auslesen
sReturn = Space$(256)
lRet = mciSendString("status mp3audio length", _
sReturn, Len(sReturn), 0&)
' MP3-Datei schliessen
mciSendString("close mp3audio", CStr(0), 0, 0)
GetMP3Length = Val(sReturn)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
.
.
.Nach geschätzten 2000 Dateien tritt der Fehler auf.
Gruß
Hannibal
_____________________________________________________
Programmieren ist heute ein Wettrennen zwischen Programmierern, die versuchen bessere und idiotensicherere Programme zu entwickeln und dem Universum, dass versucht bessere Idioten zu entwickeln |