So, guten Abend allerseits,
ich bin gerade dabei, die Ausgabe einer CDDB-Datenbank (da kann man von CDs die Titelinfos bekommen) auszuwerten.
Der String, den mir die DB liefert, sieht so aus:
Spoiler anzeigen
Jetzt möchte ich bestimmte Infos extrahieren, z.B. Interpret, Album, Musiktitel, etc.. Soweit so gut. Bisher habe ich also Folgendes:
Ich möchte die Zeile mit dem Interpret und dem Albumnamen "3 Doors Down / The Better Life" komplett extrahieren (Zeile 24 im Spoiler, da wo steht: Um diese Zeile geht es!!!!)
Hier bekomme ich in Zeile 4 den Fehler:
System.ArgumentOutOfRangeException
HResult=0x80131502
Nachricht = Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
Soweit verstanden.
Ich denke der Fehler ist in Zeile 3. Da will ich die Endposition ermitteln, indem ich zur Startposition das erste Vorkommen eines Zeilenumbruchs ermittele und 1 abziehe. Das ist wohl so nicht korrekt...
Wenn ich einen Haltepunkt setze, ist
Wie also ermittle ich sonst den Index des Zeilenumruchs (ich denke das ist das Problem)?
ich bin gerade dabei, die Ausgabe einer CDDB-Datenbank (da kann man von CDs die Titelinfos bekommen) auszuwerten.
Der String, den mir die DB liefert, sieht so aus:
210 data 8909930b CD database entry follows (until terminating `.')
# xmcd
#
# Track frame offsets:
# 150
# 17687
# 37555
# 54855
# 69407
# 89350
# 107235
# 121315
# 140962
# 155695
# 166937
#
# Disc length: 2453 seconds
#
# Revision: 0
# Processed by: cddbd v1.5.2PL0 Copyright (c) Steve Scherf et al.
# Submitted via: gnudb v1.0.1
#
DISCID=8909930b
DTITLE=3 Doors Down / The Better Life ##############Um diese Zeile geht es!!!
DYEAR=2000
DGENRE=acoustic rock
TTITLE0=Kryptonite
TTITLE1=Loser
TTITLE2=Duck and Run
TTITLE3=Not Enough
TTITLE4=Be Like That
TTITLE5=Life of My Own
TTITLE6=The Better Life
TTITLE7=Down Poison
TTITLE8=By My Side
TTITLE9=Smack
TTITLE10=So I Need You
EXTD=
EXTT0=
EXTT1=
EXTT2=
EXTT3=
EXTT4=
EXTT5=
EXTT6=
EXTT7=
EXTT8=
EXTT9=
EXTT10=
PLAYORDER=
.
# xmcd
#
# Track frame offsets:
# 150
# 17687
# 37555
# 54855
# 69407
# 89350
# 107235
# 121315
# 140962
# 155695
# 166937
#
# Disc length: 2453 seconds
#
# Revision: 0
# Processed by: cddbd v1.5.2PL0 Copyright (c) Steve Scherf et al.
# Submitted via: gnudb v1.0.1
#
DISCID=8909930b
DTITLE=3 Doors Down / The Better Life ##############Um diese Zeile geht es!!!
DYEAR=2000
DGENRE=acoustic rock
TTITLE0=Kryptonite
TTITLE1=Loser
TTITLE2=Duck and Run
TTITLE3=Not Enough
TTITLE4=Be Like That
TTITLE5=Life of My Own
TTITLE6=The Better Life
TTITLE7=Down Poison
TTITLE8=By My Side
TTITLE9=Smack
TTITLE10=So I Need You
EXTD=
EXTT0=
EXTT1=
EXTT2=
EXTT3=
EXTT4=
EXTT5=
EXTT6=
EXTT7=
EXTT8=
EXTT9=
EXTT10=
PLAYORDER=
.
Jetzt möchte ich bestimmte Infos extrahieren, z.B. Interpret, Album, Musiktitel, etc.. Soweit so gut. Bisher habe ich also Folgendes:
VB.NET-Quellcode
- Public Function ExtrahiereInterpretUndAlbum(Daten As String) As String 'Der String der vom CDDB Server kommt wird hier als Argument übergeben
- Dim cddbStartposition As Integer = Daten.IndexOf("DTITLE=") + 7 'hier wird die Startposition ermittelt
- Dim cddbEndposition As Integer = cddbStartposition + Daten.IndexOf(Environment.NewLine, cddbStartposition) - 1 'hier wird die Endposition ermittelt
- Dim InterpretUndAlbum As String = Daten.Substring(cddbStartposition, cddbEndposition - cddbStartposition) 'hier wird der String extrahiert
- Return InterpretUndAlbum
- End Function
Ich möchte die Zeile mit dem Interpret und dem Albumnamen "3 Doors Down / The Better Life" komplett extrahieren (Zeile 24 im Spoiler, da wo steht: Um diese Zeile geht es!!!!)
Hier bekomme ich in Zeile 4 den Fehler:
System.ArgumentOutOfRangeException
HResult=0x80131502
Nachricht = Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
Soweit verstanden.
Ich denke der Fehler ist in Zeile 3. Da will ich die Endposition ermitteln, indem ich zur Startposition das erste Vorkommen eines Zeilenumbruchs ermittele und 1 abziehe. Das ist wohl so nicht korrekt...
Wenn ich einen Haltepunkt setze, ist
cddbStartposition = 425
und cddbEndposition = 879
. Also weit gefehlt.Wie also ermittle ich sonst den Index des Zeilenumruchs (ich denke das ist das Problem)?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()