Autor:
Bernhard Elbl
Erstellt am:
01 Mär 2002 16:30
|
File Functions Teil 1 - MP3´s und Bitmap´s
|
|
Mit VB6 lassen sich binäre Dateien sehr leicht Auslesen. Also können Sie z.B. die Breite und Höhe eines Bildes, oder Titel, Album, Künstler eines MP3-Files auslesen. All diese Info´s sind in jedem MP3 oder Bild immer gleich und bilden eine Struktur. Diese muss man natürlich kennen. Binäre Dateien in VB6 auslesen ist viel einfacher, schneller und besser als mit ASP. Ja sie haben richtig gehört auch mit puren ASP können Sie die oben genannten Informationen wie z.B. Kompression und Grösse eines Bildes auslesen und mehr oder weniger auch schreiben. Welche Struktur hat die MP3 Info? Jeder MP3-Player zeigt Ihnen an, wie ein Song heisst und vieles mehr. Das MP3Info befindet sich zum Schluss eines MP3-Files und hat die exacte Länge von 128 Bytes. Zu mindest bei der ID3v1. Inzwischen gibt es allerdings die ID3v2. Bei dieser befindet sich das Info und hat KEINE 128 Byte-Struktur! TAG 3 Bytes Titel 30 Bytes Künstler 30 Bytes Album 30 Bytes Jahr 4 Bytes Kommentar 30 Bytes Genre 1 Byte Das "TAG"-Element definiert den Anfang dieser Info und enthält immer den Wert "TAG". Der Rest spricht wohl für sich. mehr Infos... http://www.pcwelt.de/tipps/software/allgemein/17399/ Für VB6 ergibt sich daraus folgende Struktur-Definition.
Private Type MP3Info TAG As String * 3 Titel As String * 30 Kuenstler As String * 30 Album As String * 30 Jahr As String * 4 Kommentar As String * 30 Genre As Byte End Type |
Mit String * 30 wird ein String mit der Länge 30 definiert usw. Und am Schluss haben wir dann unsere 128 Byte-Struktur. Diese Struktur baue ich jetzt in das Klassen-Modul "CMP3Info" ein und schreibe die Methode SetMP3File, welche die Struktur füllt. CMP3Info.cls
Private Type MP3Info TAG As Str....Private m_MP3Info As MP3Info Private m_sFileName As String Public Sub SetMP3File(ByVal sFileName As String) Dim iFile As Integer Dim lInfoBegin As Long iFile = FreeFile ' Datei mit Binär-Mode öffnen Open sFileName For Binary Access Read As #iFile lInfoBegin = LOF(iFile) - 127 ' MP3Info Struktur füllen Get #iFile, lInfoBegin, m_MP3Info Close #iFile m_sFileName = sFileName End Sub ' Properties einbauen umd die Information zu veräussern Public Property Get Titel() As String Titel = m_MP3Info.Titel End Property Public Property Get Kuenstler() As String Kuenstler = m_MP3Info.Kuenstler End Property Public Prop........usw......... |
Was jetzt noch fehlt ist die Struktur zu verändern um selber Titel usw zu definieren und ins MP3-File zu schreiben.
' MP3-Struktur verändern mit Property Lets Public Property Let Titel(ByVal par As String) m_MP3Info.Titel = par End Property Public Property Let Kuenstler(ByVal par As String) m_MP3Info.Kuenstler = par End Property' MP3Info mit aktueller überschreiben. Public Sub WriteMP3Info() Dim iFile As Integer Dim lInfoBegin As Long iFile = FreeFile Open m_sFileName For Binary Access Write As #iFile lInfoBegin = LOF(iFile) - 127 Put #iFile, lInfoBegin, m_MP3Info Close #iFile End Sub |
Jetzt kann man die Klasse benutzen. 1 Form, 1 Command-Button und dann umrühren...
Private Sub cmdMP3Info_Click() Dim sFileName As String Dim vBin As Variant sFileName = "C:myMP3File.mp3" If Not sFileName = "" Then Dim oMP3Info As New CMP3Info With oMP3Info .SetMP3File sFileName Text1.Text = .Titel Text2.Text = .Kuenstler Text3.Text = .Album Text4.Text = .Jahr Text5.Text = .Kommentar End With Set oMP3Info = Nothing End If End Sub |
Was ist mit BitMap´s auslesen? Das geht ganz genauso. Nur das wir zwei Strukturen brauchen, die bereits vordefiniert über den API-Viewer zu erreichen sind. Die BitMap-Informationen stehen nicht bei den MP3´s am Schluss des Files, sondern gleich ganz am Anfang.
Type BITMAPFILEHEADER Type BITMAPINFOHEADER |
Wichtig ist die Reihenfolge zu beachten!!Und so werden die Strukuren für BitMaps gefüllt!
iFile = FreeFile Open sFileName For Binary Access Read As #iFile Get #iFile, , m_BitMapHeader Get #iFile, , m_BitMapInfo Close #iFile |
Alle Sources gibts unten zum runterladen.
|
|