mp3 Verwaltungs programm

Mehlpuet

Grünschnabel
Hallo!:)

Dies ist mein erster Eintrag in dieses Forum. Ich habe hier schon eine menge nützlicher tips gefunden. ich hoffe jedoch das Ihr mir diesmal in einigen speziellen fragen helfen könnt.

Ich habe angefangen ein mp3 verwaltungsprogramm zu programmieren. dort möchte ich meine Mp3 Songs eingeben diese sollen in einer textbox angezeigt werden. ich habe das soweit auch geschaft nur habe ich einpaar Probleme.

:confused:

1. in meiner textbox sollen die interpreten titel usw. Tabellarisch aufgeführt werden. bei mir verschieben die sich aber immer wie es ihnen passt. Gibt es da so etwas wie platz halter etc.

2. Wenn ich einen Song denn es schon gibt, erneut eingebe, soll er denn alten überschreiben. Wie funktioniert das?!

3. Würde ich ganz gerne das mein programm die einzelnen Zeiten eines Songs zusammen zählt.

Ich hoffe ihr versteht meine fragen. :rolleyes:
Da ich unglücklicherweise auch nicht weis wie ihr die Quelltexte hier in Miniaturansicht einfügt muuste ich denn Quelltext als anhang hinzufügen.
 

Anhänge

Zuletzt bearbeitet:
Hi ich bins nochmal!

Könnte mir jemand sagen wie ich einen bestimmten Teil einer Textbox überschreiben kann?!

Ich würde nähmlich gerne wenn ich einen Dateinamen bereits habe das er denn vorhanden überschreibt.

Ich habe bisher nur erreicht das er das abgeänderte zweimal anzeigt. Der quell code sieht wie folgt aus:


PHP:
Private Sub SpeicherCommand_Click()
   Dim i As Integer
   If sekText.Text > 59 Then MsgBox ("Bitte geben sie eine Zahl unter 60 ein.")
   
   
   n = n + 1
   For i = 1 To n
If DateinameText.Text = daten(i).Dateiname Then

daten(i).Inter = InterpretText.Text
daten(i).Bewertung = BewertungText.Text

daten(i).Musikrichtung = MusikrichtungText.Text

daten(i).Qualität = QualitätText.Text

daten(i).Titel = titelText.Text

Else
   daten(n).time.min = CDbl(minText.Text)
   daten(n).time.sek = CDbl(sekText.Text)
   daten(n).Qualität = CDbl(QualitätText.Text)
   daten(n).Bewertung = CDbl(BewertungText.Text)
   daten(n).Inter = InterpretText.Text
   daten(n).Titel = titelText.Text
   daten(n).Dateiname = DateinameText.Text
   daten(n).Musikrichtung = MusikrichtungText.Text
   
   
End If
Next i
End Sub

Nun ändert er das zwa´r richtig ab er sollte aber dann denn ersten eintrag löschen wie funktioniert das?!
 
Hallo Mehlpuet,

zu 1. Es gibt zum Beispiel den Tab Befehl: "Text1" & vbTab & "Text2", du könntest auch die einzelen Zeichen zählen und die entsprechenden Leerzeichen einfügen. Im allgemeinen würde ich eine ListBox nehmen oder eine Datenbank, auch mehrere ListBoxen die du parelell scrollen lässt hätten Tabellen Charakter.

Wenn du ein Trennzeichen verwendest, etwa: Songtitel | Autor | Länge
ist es einfacher die Strings zu trennen.

zu 2. Du musst wohl die Textdatei/-box durchsuchen ob der neue Song schon vorhanden ist, ersetzen kannst du ihn z.B. mit folgenden Befehl:
Code:
Replace(Ausdruck, suchen, ersetzendurch[, starten[, Anzahl[, vergleichen]]])

bei einer ListBox, mehreren -, oder einer Datenbank wäre das einfacher, weil du nur die entsprechenden Zeilen löschen oder (zu 3.) zusammenfassen musst.
 
Hi,

Ja danke. Werde ich mal versuchen also das mit der Anzeige der Textbox habe ich hingekriegt.

PHP:
Private Sub DatenAnzeigenCommand_Click()
    Dim p As String
    Dim x As String                                              'Ausgabetext
    Dim i As Integer
 
    p = 30
    For i = 1 To n
        x = x & "" & daten(i).time.min & "," & daten(i).time.sek & vbTab & "" & daten(i).Inter & Space(30 - Len(daten(i).Inter)) & vbTab & "" & daten(i).Titel & Space(30 - Len(daten(i).Titel)) & vbTab & "" & daten(i).Dateiname & Space(40 - Len(daten(i).Dateiname)) & vbTab & "" & daten(i).Qualität & Space(20 - Len(daten(i).Qualität)) & vbTab & "" & daten(i).Musikrichtung & Space(20 - Len(daten(i).Musikrichtung)) & vbTab & "" & daten(i).Bewertung & Space(10 - Len(daten(i).Bewertung)) & vbNewLine
    DatenText.Text = x
    Next i
    
End Sub

Und das mein programm die zeit zusammen rechnet habe ich auch hinbekommen.

nur das mit dem ersetzen eines Bereits vorhandenen Eintrags macht mir noch zu schaffen.

Das mein Programm es entsprechend ändert funktioniert. Aber er sollte die andere Datei löschen hat da jemand eine Idee? denn Code habe ich ja bereits gepostet.



MFG Mehlpuet
 
Hi


Also meine Schwester hat auch ein paar Probleme:

-Einen Song ersetzen, falls der Dateiname schon vorkommt

-Songs bestimmen und anzeigen lassen, die einer bestimmten Musikrichtung entsprechen

-Die Gesamtlänge aller Songs berechnen



Zu der Aufgabe unten hat sie schon folgenden Code geschrieben:

Code:
Option Explicit

Private Type TAngaben
    Interpret As String                             ' Name des Interpreten
    Song As String                                  ' Name des Songs
    Minuten As Byte                                 ' Minuten
    Sekunden As Byte                                ' Sekunden
    Qualität As Integer                             ' Qualität
    Bewertung As Byte                               ' 1 bis 6
    Musikrichtung As String                         ' Musikrichtung
    Datei As String                                 ' Dateiname
End Type

Const MAX_INDEX = 3000
Dim daten(1 To MAX_INDEX) As TAngaben
Dim n As Integer

Private Sub BinOutputCommand_Click()
    Dim i As Integer
    Kill "C:\temp\test.dat"                                 ' Löschen evtl. vorhandener Datei
    Open "C:\temp\test.dat" For Binary Access Write As #1   ' 1 = Kanalnummer
    For i = 1 To n
      Put #1, , daten(i).Interpret & vbNewLine
      Put #1, , daten(i).Song & vbNewLine
      Put #1, , daten(i).Minuten & vbNewLine
      Put #1, , daten(i).Sekunden & vbNewLine
      Put #1, , daten(i).Qualität & vbNewLine
      Put #1, , daten(i).Bewertung & vbNewLine
      Put #1, , daten(i).Musikrichtung & vbNewLine
      Put #1, , daten(i).Datei & vbNewLine
    Next i
    Close #1
End Sub

Private Sub DatenAnzeigenCommand_Click()
    Dim t As String                                         ' Ausgabetext
    Dim x As String
    Dim i As Integer
    DatenText.Text = Trim(DatenText.Text)
        If DatenText.Text = "" Then
            DatenText.Text = "Interpret" & Space(30 - 9) & vbTab & "" & "Song" & Space(30 - 4) & vbTab & "" & "Länge" & Space(20 - 5) & vbTab & "" & "Musikrichtung" & Space(20 - 13) & vbTab & "" & "Qualität" & Space(20 - 8) & vbTab & "" & "Bewertung" & Space(20 - 9) & vbTab & "" & "Dateiname" & Space(40 - 9) & vbNewLine & vbNewLine
            For i = 1 To n
             t = t & "" & daten(i).Interpret & Space(30 - Len(daten(i).Interpret)) & vbTab & "" & daten(i).Song & Space(30 - Len(daten(i).Song)) & vbTab & "" & daten(i).Minuten & Space(2 - Len(daten(i).Minuten)) & ":" & daten(i).Sekunden & Space(2 - Len(daten(i).Sekunden)) & Space(16) & vbTab & "" & daten(i).Musikrichtung & Space(20 - Len(daten(i).Musikrichtung)) & vbTab & "" & daten(i).Qualität & Space(20 - Len(daten(i).Qualität)) & vbTab & "" & daten(i).Bewertung & Space(20 - Len(daten(i).Bewertung)) & vbTab & "" & daten(i).Datei & Space(40 - Len(daten(i).Datei)) & vbNewLine
            Next i
         Else
            i = n
             t = t & "" & daten(i).Interpret & Space(30 - Len(daten(i).Interpret)) & vbTab & "" & daten(i).Song & Space(30 - Len(daten(i).Song)) & vbTab & "" & daten(i).Minuten & Space(2 - Len(daten(i).Minuten)) & ":" & daten(i).Sekunden & Space(2 - Len(daten(i).Sekunden)) & Space(16) & vbTab & "" & daten(i).Musikrichtung & Space(20 - Len(daten(i).Musikrichtung)) & vbTab & "" & daten(i).Qualität & Space(20 - Len(daten(i).Qualität)) & vbTab & "" & daten(i).Bewertung & Space(20 - Len(daten(i).Bewertung)) & vbTab & "" & daten(i).Datei & Space(40 - Len(daten(i).Datei)) & vbNewLine
         End If
        DatenText.Text = DatenText.Text & t
End Sub

Private Sub Form_Load()
    n = 0
    Dim i As Integer
    Dim kanal As Integer
    Dim Text As String
    kanal = FreeFile                                ' Kanalnummer bestimmen
    Open "C:\temp\test.txt" For Input As #kanal
    If EOF(kanal) = False Then
     While EOF(kanal) = False
      Line Input #kanal, Text
      DatenText.Text = DatenText.Text & Text & Chr(13) & Chr(10)
     Wend
    End If
    Close #kanal
    Neu = False
End Sub

Private Sub SpeichernCommand_Click()
   Dim i As Integer
    If SekundenText.Text > 59 Then
        MsgBox ("Bitte geben Sie die Sekunden unter 60 ein!")
    End If
        If BewertungText.Text > 6 Then
            MsgBox ("Bitte wählen Sie eine Bewertung zwischen 1 und 6!")
        End If
        
        n = n + 1
        daten(n).Interpret = InterpretText.Text
        daten(n).Song = SongText.Text
        daten(n).Minuten = MinutenText.Text
        daten(n).Sekunden = SekundenText.Text
        daten(n).Qualität = QualitätText.Text
        daten(n).Bewertung = BewertungText.Text
        daten(n).Musikrichtung = MusikrichtungText.Text
        daten(n).Datei = DateiText.Text
End Sub

Private Sub TextOutputCommand_Click(Index As Integer)
    Dim i As Integer
    Dim kanal As Integer
    kanal = FreeFile                                ' Kanalnummer bestimmen
    Open "C:\temp\test.txt" For Output As #kanal
      Print #kanal, DatenText.Text                  ' Komplette Textbox speichern
    Close #kanal
End Sub
 

Anhänge

Zuletzt bearbeitet:
Das klingt ganz und gar nach der Selben Aufgabe der ich mich fröhnen darf.

Also den doppelten titel ersetzen, das habe ich über den Speicher Command Button gelöst wobei ich dort eine If Bedingung eingebaut habe.

PHP:
If n <> 0 Then
   
   For i = 1 To n
   
        If DateinameText.Text = daten(i).Dateiname Then
            daten(i).Inter = InterpretText.Text
            daten(i).Bewertung = CDbl(BewertungText.Text)
            daten(i).Musikrichtung = MusikrichtungText.Text
            daten(i).Qualität = CDbl(QualitätText.Text)
            daten(i).Titel = titelText.Text
            daten(i).time.min = CDbl(minText.Text)
            daten(i).time.sek = CDbl(sekText.Text)
            doppelt = True                                                
            
            
        End If
    Next i
End If

If doppelt = False Then                                                     
    n = n + 1
    daten(n).time.min = CDbl(minText.Text)
    daten(n).time.sek = CDbl(sekText.Text)
    daten(n).Qualität = CDbl(QualitätText.Text)
    daten(n).Bewertung = CDbl(BewertungText.Text)
    daten(n).Inter = InterpretText.Text
    daten(n).Titel = titelText.Text
    daten(n).Dateiname = DateinameText.Text
    daten(n).Musikrichtung = MusikrichtungText.Text

End If

Dim x As String

For i = 1 To n

    If DateinameText.Text = daten(i).Dateiname Then                           
        daten(i).Inter = InterpretText.Text
        daten(i).Bewertung = CDbl(BewertungText.Text)
        daten(i).Musikrichtung = MusikrichtungText.Text
        daten(i).Qualität = CDbl(QualitätText.Text)
        daten(i).Titel = titelText.Text
        daten(i).time.min = CDbl(minText.Text)
        daten(i).time.sek = CDbl(sekText.Text)
    End If

Next i

End Sub

mit der musikrichtung das hab ich so geregelt
PHP:
Private Sub MusikrichtungCommand_Click()                                  
Dim x As String
Dim i As Integer
 
     For i = 1 To n
        If MusikrichtungText.Text = daten(i).Musikrichtung Then
            x = x & Titel Interpret ......
        DatenText.Text = x
        End If
    Next i

End Sub

Und bei der gesamtdauer der Songs würde ich es Einfach mal mit

Mod 60 versuchen

MFG Mehlpuet
 
Ja, aber wie machst du es denn, wenn du dein Programm beendest und dann wieder startest und deine Sammlung einliest, dann hast du doch die ganzen Interpreten Titel usw. gar nicht mehr unter daten(i).Interpret usw.
 
Ja das ist ja ganz einfach ich speicher die DAten in eine Binärdatei.


Private Sub BinOutputCommand_Click()

Open "C:\temp\test.dat" For Binary Access Write As #1 ' 1 = Kanalnummer
For i = 1 To n
Put #1, , daten(i).blabla & vbNewLine
Put #1, , daten(i).blabla usw.usw.


Wenn ich das Programm neu starte lese ich die Binärdatei einfach wieder aus.

Private Sub BinInputCommand_Click()

Open "C:\temp\test.dat" For Binary Access Read As #1 ' 1 = Kanalnummer
For i = 1 To n
Put #1, , daten(i).blabla & vbNewLine
Put #1, , daten(i).blabla usw.usw.


und schon befinden sich die ganzen daten unter Daten(i).blabla
 
Zurück