Trim funktioniert nicht

bada-edv

Grünschnabel
Hallöchen

Ich bin hier fast am verzweifeln, da ich glaube alles richtig gemacht zu haben. Ich versuche aus einer MP3 datei den ID3 Tag auszulesen.

Private type ID3Info
TAG As String * 3
Artist As String * 30
Titel as String * 30
Album As String * 30
Year As String * 4
Comments As String * 30
Genre As Byte
End Type


Dim FF as Integer

Private Sub Command1_Click()
Dim dataMP3 as id3Info
FF = Freefile
open Datei for binary as #FF
Seek #FF, LOF(FF) - 127
Get #IFF, , dataMP3
close #FF
If dataMP3.TAG = "TAG" Then
sInterpret = Trim(dataMP3.Artist)
sTitel = Trim(dataMP3.Title)
End If
End Sub


soweit der Code. Der 'TAG' ist vorhanden und in die beiden Variablen sInterpret und sTitel werden auich die richtigen Inhalte geschrieben. Da die Variablen in der Type deklarierung die Größe von 30 bekommen haben sind in den beiden Variablen auch noch leerzeichen. Diese wollte ich mit TRIM(variable) wegbekommen. Genau da liegt mein Problem das das nicht funktioniert. Hat da jemand eine Idee woran das leigen könnte Ich verwende Visual Studio 6.0.

Vielen Dank im voraus
 
Da die Variablen in der Type deklarierung die Größe von 30 bekommen haben sind in den beiden Variablen auch noch leerzeichen

Warum machst du denn so etwas? VB belegt dies natürlich mit Leerzeichen, lass doch die Grössendimensionierung weg

Visual Basic:
Private type ID3Info
       TAG As String  
        Artist As String  
        Titel as String  
         Album As String 
         sYear As String   ' Year geht nicht da reservierter begriff
         Comments As String  
         Genre As Byte 
End Type

Dann ist dein Tag auch = "" wenn nichts drinsteht

Grüsse bb
 
Da ich die Größe mit angebe kann ich direkt auf den Type zugreifen. Dort kann nur das gewünschte drinstehen. Ansonsten könnte ich auch die letzten 127 byte in eine einzelne Variable lesen und mit mid(string,x,y) arbeiten.
 
Ok das Problem ist folgendes in deinem String * 30 steht nicht das Leerzeichen drin sondern das CHR$(0) und dieses kann nicht mit Trim entfernt werden.
BSP:
Visual Basic:
Dim strtest As String * 30
Dim help As String

help = Trim$(strtest)
Debug.Print Asc(Mid(strtest, 1, 1))
Debug.Print Len(Trim(help))
Debug.Print Asc(" ")
da ja Trim bekanntlich auf " " geht und das ist laut bsp oben chr 32

Lösung wenn du sicher gehen willst das Trim funktioniert musst du deine Variablen mit leerzeichen also chr 32 initialisieren Bsp:

Visual Basic:
Dim strtest As String * 30
Dim help As String

strtest = Space$(30)
help = Trim$(strtest)

Debug.Print Asc(Mid(strtest, 1, 1))
Debug.Print Len(Trim(help))
Debug.Print Asc(" ")


Grüsse bb
 
Zurück