# Trim funktioniert nicht



## bada-edv (3. Mai 2007)

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


----------



## Alex F. (3. Mai 2007)

> 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 


```
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


----------



## bada-edv (4. Mai 2007)

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.


----------



## Alex F. (4. Mai 2007)

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:

```
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:


```
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


----------



## bada-edv (4. Mai 2007)

Nein, leider war es nicht die Lösung für mein Problem


----------



## Alex F. (4. Mai 2007)

Welches Zeichen hast du denn drin?


----------

