Combobox und die Einträge wieder entfernen

Xervek

Mitglied
Hallo,

ich bins nochmal.

Letzter Punkt soweit ich jetzt geplant habe und dann habe ich mein Programm nochmal erweitert.
Es geht um die Comboboxen.

Füllen geht folgendermaßen
Combo1.AddItem "Hanswurst"
Combo1.AddItem "Wursthans"
Combo1.AddItem "HansiPansi"
Combo1.AddItem "PansiHansi"

Soweit sogut, er tut es wie ich das will. Jetzt habe ich aber weiter gedacht, da ich den Inhalt in 6 Unterschiedlichen Dateien Speicher und auslese, wollte ich nen Button hinzufügen, der auch die in der Combobox ausgewählte Datei löschen kann.

Prompt

Code:
If Combo1.Text = game_name(1) Then

    If FileExists("games\game1.game") Then
        Kill ("games\game1.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 1
    End If

End If

If Combo1.Text = game_name(2) Then

    If FileExists("games\game2.game") Then
        Kill ("games\game2.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 2
    End If

End If

If Combo1.Text = game_name(3) Then

    If FileExists("games\game3.game") Then
        Kill ("games\game3.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 3
    End If

End If

If Combo1.Text = game_name(4) Then

    If FileExists("games\game4.game") Then
        Kill ("games\game4.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 4
    End If

End If

If Combo1.Text = game_name(5) Then

    If FileExists("games\game5.game") Then
        Kill ("games\game5.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 5
    End If

End If

If Combo1.Text = game_name(6) Then

    If FileExists("games\game6.game") Then
        Kill ("games\game6.game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem 6
    End If

End If

Soweit sogut... aaabbbber... Angenommen ich lösche "games\game1.game", funktioniert das noch, der Eintrag wird entfernt und die Dazugehörige Datei gekillt... Demnach sind jetzt 5 Einträge vorhanden, Datei1 wurde aber bereits gelöscht. Wenn ich jetzt Datei 6 löschen will, bekomme ich einen Überlauffehler (ganz klar, es sind nur noch 5 Einträge vorhanden)... Was kann ich dagegen jetzt tun? Bei "AddItem" kann ich einen Namen hinzufügen, bei "RemoveItem" nimmt er nur Integer an, also nur Zahlen von 1-sonstwas...

Hat vielleicht jemand eine Idee?

Vielen Dank im Voraus!
 
Hallo,

um es ganz einfach zu machen
Visual Basic:
On Error Resume Next

damit sparst du dir den anderen Code.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

was ist denn "next" in diesem Fall? :suspekt:

Bzw. verstehe ich jetzt nicht so ganz wie mir das helfen soll? Ich bin doch im Moment nicht in der Lage, die 6. Datei zu löschen, da hilft mir doch auch ein "Resume" nicht, oder? Bzw. wo sollte ich das denn anbringen damit es das tut, was ich möchte?
 
Was D@nger damit sagen wollte ist, dass du nur eine Prüfung, z.B. in einer Schleife machst.

Code:
For i =1 to 6
On Error Resume Next
If Combo1.Text = game_name(i) Then

    If FileExists("games\game" & i & ".game") Then
        Kill ("games\game" & i & ".game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem i
    End If

End If
next i

Dadurch überprüfst du alle einträge, und wenn der index nicht mehr vorhanden ist, wird der codeabschnitt, der den fehler verursacht, "on error" einfach übersprungen "resume next"
 
Hallo,

es funktioniert jetzt irgendwie... und irgendwie auch wieder nicht. Anscheinend löscht er die Datei die er löschen soll, entfernt aber den Eintrag in der Combobox nicht, wie er soll. Damit ist die eigentliche Datei bereits vernichtet, die Combobox ist aber der Meinung, sie ist noch vorhanden. Letztlich ist es jetzt das Gleiche wie vorher, nur das er nicht mehr ins Nirvana verschwindet sondern alles so lässt wie es ist. Ich muss also irgendwie diese Einträge aus der ComboBox rausbekommen...

Edit:

Ich glaube ich weiß was er tut. Er löscht das korrekte File, er entfernt aber den falschen Eintrag in der ComboBox dafür. Er entfernt einen Eintrag "+1" in der Combobox.

Nochmal Edit:

auch nicht. Er entfernt die Einträge nicht korrekt wie er soll. Und ich weiß nicht wieso und was ich dagegen machen kann/soll

hoffe letzter edit:

Also jetzt habe ichs glaube ich. Wenn ich die Dateien von hinten nach vorne lösche es wunderbar. Andersrum, so wie ichs oben gesagt habe, erst 1 und dann 6 dann wird 1 entfernt 6 aber nicht aus dem oben genannten grund, es gibt nen Überlauf. Kann mir dabei jetzt irgendwer helfen diesen zu umgehen sodass es wieder korrekt ausgeführt wird?
 
Zuletzt bearbeitet:
hm... ich hab eine sache nicht bedacht bei mir, also mal anders rum

Code:
For i  = 6 to 1 Step -1
On Error Resume Next
If Combo1.Text = game_name(i) Then

    If FileExists("games\game" & i & ".game") Then
        Kill ("games\game" & i & ".game")
        cmd_kill_file.Enabled = False
        Combo1.RemoveItem i
    End If

End If
next i
 
Hallo,

vielen Dank für die Antwort. Ich habe das ganze jetzt anders gelöst, ich lösche die komplette Liste und lasse mir direkt danach wieder auslesen welche Dateien vorhanden sind -> danach befülle ich die Liste wieder mit allen Dateien die vorhanden sind. Welche Methode ist denn besser? Deine oder meine?
 
Hallo,

generell habe ich noch ne Frage, ist zwar was anderes aber ehe ich nen neuen Thread aufmache... und zwar wollte ich fragen, ob es möglich ist, die Icons aus den Dateien auszulesen? Wenn ja, wie mache ich denn sowas am Besten?
 
Zurück