C# Programm zum filtern von Bildsequenzen

Gast #4208051
Lesenswert?

Ich versuche momentan ein Programm zu schreiben, welches Fehlerhafte 
bilder aus einer Sequenz herausfiltert und verschiebt bzw. löscht. Als 
basis für die Suche habe ich eine Liste, in welcher die Rendertasks 
(Bildnummer) stehen. somit hätte ich zum Beispiel das fehlerhafte Bild 
Rendering_0123 und in der liste würde 123 stehen. Das Problem dabei ist, 
dass wenn ich mit String.Contains nach 123 suche, auch das bild 1230 und 
das Bild 1123 gelöscht werden. je nach Sequenz werden allerdings 
unterschiedlich viele Nullen vorgereiht. Da sich das ganze aber auf 
andere Sequenzen anwenden lassen sollte, kann ich nicht einfach eine 
vorgegeben Anzahl von nullen vorreihen.

Nun hätte ich den Ansatz beide Strings von hinten nach vorne zu 
vergleichen, da sich die Nummerierung immer am Ende des Dateinamens 
befindet. allerdings bin ich grad ziemlich planlos wie ich das am Besten 
anstellen sollte...

mfg Michael
Gast #4208055
Lesenswert?

Michael schrieb:
> Nun hätte ich den Ansatz beide Strings von hinten nach vorne zu
> vergleichen, da sich die Nummerierung immer am Ende des Dateinamens
> befindet. allerdings bin ich grad ziemlich planlos wie ich das am Besten
> anstellen sollte...

und warum nicht einfach die Zahl extrahieren? z.b. Regex.

Oder alles löschen was ungleich einer Ziffer ist, dann als int wandeln.
#4208065
Lesenswert?

ich würde so vorgehen:

1. Zahl herausschneiden:
1
var startIndex = myString.IndexOf('_');
2
var endIndex = myString.IndexOf('.');
3
var numberString = myString.Substring(startIndex, endIndex - startIndex);

2. Zahl in Int konvertieren:
1
var number = Int32.Parse(numberString);

(Achtung: mehr oder weniger C#-Pseudocode!)
Gast #4208147
Lesenswert?

Super Danke!

Ich habs mit der Methode von Boris hinbekommen. Nun hab ich nur noch ein 
weiteres (eher kosmetisches) Problem. Wärhend der suchvorgang läuf hängt 
das Programm. wie kann ich dem nutzer am besten mitteilen, dass der 
suchvorgang gerade läuft? Ich habe leider bisher noch nichts derartiges 
programmiert und habe daher keinen Plan wie ich das umgehen kan...

MfG Michael
#4208164
Lesenswert?

Peter II schrieb:
> .net bietet dafür einen Backgroundworker an. Dann blockier die GUI nicht
> und du kannst anzeigen was du willst.

Das wäre sinnvoll.

Zusätzlich kannst du nach dem Start des Workers noch den Mauscursor auf 
"Sanduhr" einstellen, und ggf. den Start-Button disablen (damit er nicht 
noch mal gedrückt wird).

Auch eine Fortschrittsanzeige oder Ähnliches machen sich sicherlich gut 
;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren