Delphi Fehlermeldung bei löschen aus TStringList

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
490
Hallo!

mein programm soll in einem verzeichnis alle vorhandenen ordner auslesen und deren namen in einem tstringlist speichern. das klappt auch wunderbar.
nun möchte ich aber dass bestimmte einträge da wieder rausgelöscht werden. das ganze sieht so aus:

Code:
allestyles := TStringList.Create;
      ListSubDirs('C:\xampp\htdocs\infoboard\styles', AlleStyles); //listet alle ordner im gegebenen verzeichnis auf. 

      //löscht die feiertage aus der stringlist allestyles
         allestyles.Delete(allestyles.IndexOf(Weihnachten));
         allestyles.Delete(allestyles.IndexOf(Silvester));
         allestyles.Delete(allestyles.IndexOf(TddE));
         allestyles.Delete(allestyles.IndexOf(Ostern));
         allestyles.Delete(allestyles.IndexOf(Halloween));
         allestyles.Delete(allestyles.IndexOf(Fasching));

ich möchte also alle einträge aus der tstringlist gelöscht haben, welche namen von diesen feiertagen haben. jedoch wird dann beim ausführen des programms folgende fehlermeldung ausgespuckt:

errortm.jpg


das komische: wenn ich alle lösch-befehle auskommentiere außer dem ersten, also das mit weihnachten, kommt keine fehlermeldung. also SO funktioniert es:

Code:
 allestyles := TStringList.Create;
      ListSubDirs('C:\xampp\htdocs\infoboard\styles', AlleStyles); //listet alle ordner im gegebenen verzeichnis auf. 

      //löscht die feiertage aus der stringlist allestyles
         allestyles.Delete(allestyles.IndexOf(Weihnachten));
        { allestyles.Delete(allestyles.IndexOf(Silvester));
         allestyles.Delete(allestyles.IndexOf(TddE));
         allestyles.Delete(allestyles.IndexOf(Ostern));
         allestyles.Delete(allestyles.IndexOf(Halloween));
         allestyles.Delete(allestyles.IndexOf(Fasching)); }

kann mir jemand weiterhelfen?
vielen dank
 
Naja ohne zu sehen welche Werte in der Liste sind und welche du exakt löschen lässt, isses schwer...

Vermutlich liefert allestyles.IndexOf (Weihnachten) schon nichts vernünftiges zurück, lass dir doch mal ausgeben, was da rauskommt...
 
showmessage( inttostr(allestyles.IndexOf(Weihnachten)) );
zeigt die zahl 8. der ordner "weihnachten" ist der neunte ordner in diesem verzeichnis

showmessage( inttostr(allestyles.IndexOf(Weihnachten)) );
zeigt die zahl 6, denn silvester ist der siebte ordner usw... gezählt wird ja ab 0.


ich weiss ehrlichgesagt nich genau was du noch wissen willst. welche weiteren werte in der liste sind ist da doch völlig unrelevant.

ich verstehe echt nich warum das nicht funktioniert! wenn ich nur einen löschbefehl rausschicke funzt es, aber ab 2 nicht mehr.

wenn ihr nicht wisst woran es liegt, habt ihr vielleicht ne andere idee wie ich elemente mit einem bestimmten namen aus einer stringlist löschen kann?


edit: ach ja was ich vergessen habe zu sagen: die variablen haben genau den wert, wie sie auch als variablen angegeben sind. also zB Weihnachten = 'Weihnachten', Silvester = 'Silvester'..
 
Zuletzt bearbeitet:
Genau um das, was du im Edit schreibst, ging es mir ja... :-)
Hast du mal an der Reihenfolge rumgetestet?
 
ok, ääh..

ich hab wieder versucht 2 lösch einträge auszuführen, was ja vorher nicht ging. nur diesmal nicht weihnachten und silvester sondern zwei andere. komischerweise hats funktioniert. dann hab ich schritt für schritt immer noch einen befehl dazu genommen, hat immer funktioniert. jetzt geht es komplett ohne fehlermeldung, obwohl alles genau so dasteht wie vorher nur vielleicht in anderer reihenfolge.
sonst hab ich rein gar nichts verändert..
das versteh mal einer oO


vielen dank für die hilfe, 1668mib!
 
Zurück
Oben