Autor |
Beitrag |
del1312
      
Beiträge: 190
|
Verfasst: Di 31.08.10 14:32
Hallo Leute,
folgendes Prob:
Ich möchte gerne eine Datei erstellen, wo ich z.B. in jeder Zeile den Namen einer Folge von Simpsons speichere. Das würde ich per Editor anlegen und sollte so aussehen:
01x001 Folgen-Name
01x002 Folgen-Name
01x003 Folgen-Name
usw.
Nun nehme ich Simpsons mit mit Save.TV auf und speicher mir die auf dem Rechner ab. Die Datei die ich erhalten sieht so aus:
Die_Simpsons_Wer_hat_Mister_Burns_erschossen_28-08-2010_0630_385720.avi
Mein kleine Tool kann jetzt schon die unnötigen Zeichen aus dem Namen entfernen, ich kann manuell Staffel und Folgen-Nr auswählen und per klick speichert er mir
die Folge brav in mein Archiv. Das Ganze klappt eigentlich schon echt super und der Name sieht dann nach dem umwandeln so aus:
03x103 Wer_hat_Mister_Burn_erschossen.avi
Die 03 Steht für Staffel 3 und die 103 für die Folgen-Nr. Wie gesagt eigenlich klappt es schon ganz gut, aber man muss immer in der Liste nachschauen und die Folge
erstmal raussuchen und per Hand Staffel und Folgen-Nr hinzufügen. Nun würde ich das gerne automtisieren. Wenn ich nun ne Folge in mein Tool anklicke, dann soll er den
Namen mit der Liste abgleichen, die Folge erkennen und automatisch den Namen vergeben inkl Staffel und Folgen Nr und am Ende in meinem Serienarchiv speichern.
Ich hoffe ihr könnt mir noch folgen ;o)
Wie mach ich das am besten mit der Liste? Nehm ich da ne normale Text Datei kopiere da meine Liste von Folgen rein? Habt ihr ein paar Ideen? Will ja keine Komplettlösung,
nur ein paar Tipps ;o)
DANKE!
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 31.08.10 14:37
Also ich würde in deinem Fall eher zu ner Datenbank tendieren, da man mit dem ding viel schönere abfragen machen kann. 
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
del1312 
      
Beiträge: 190
|
Verfasst: Di 31.08.10 14:40
Oh na dann wird das aber gleich noch viel Komplexer oder? Kannst du mir ein paar Starttipps dazu geben?
Also ich hab jetzt mal die Textdatei einfach in eine Listbox ausgelesen, jetzt müsste ich nur noch irgendwie vergleichen.
Wie kann ich in der ListBox nach Strings suchen also z.B nach "*Burn*" ?
Hatte das hier aber es klappt nicht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var iFound: Integer; begin iFound := ListBox2.Items.IndexOf(Edit6.Text); if iFound >= 0 then ShowMessage('Das gesuchte Wort wurde an ' + IntToStr(iFound) + 'ter Stelle gefunden.') else ShowMessage('Das gesuchte Wort wurde nicht gefunden.'); end; |
Da finde ich nur die ganze Zeile, aber wie mach ich das, wenn ich nur ein paar Buchstabenfolgen in der Zeile suche?
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 31.08.10 15:32
Du musst alles Items die Listbox durchgehen, und z.B. mit Pos/PosEx nach dem gesuchten Teilstring in dem einzelnen Item suchen.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Di 31.08.10 21:21
Ich bin ein absoluter Fan von Ini-Files.
Total simpel über TIniFile zu machen, funktioniert wie eine kleine Datenbank (kommt natürlich auf deine Datenmengen drauf an, für alle Simpsons-Folgen reichts auf alle Fälle) und ist platzsparend und unkompliziert. Wobei natürlich schlecht ist, dass du ja darin suchen willst...vielleicht ist ini dann doch nicht so gut.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 31.08.10 22:37
Xion hat folgendes geschrieben : | Ich bin ein absoluter Fan von Ini-Files.
Total simpel über TIniFile zu machen, funktioniert wie eine kleine Datenbank (kommt natürlich auf deine Datenmengen drauf an, für alle Simpsons-Folgen reichts auf alle Fälle) und ist platzsparend und unkompliziert. Wobei natürlich schlecht ist, dass du ja darin suchen willst...vielleicht ist ini dann doch nicht so gut. |
Lass mich dazu mal einen Post von Jaenicke zitieren aus einem anderen Thread:
jaenicke hat folgendes geschrieben : | Noch dazu sind die API-Funktionen, auf denen TIniFile aufbaut, als deprecated markiert, sollten also möglichst nicht mehr verwendet werden...
Eben weil das INI-Format noch ein Relikt aus den alten Windowsversionen ist, werden auch die entsprechenden Funktionen nur noch mitgeschleppt. Es kann aber passieren, dass es in einer der nächsten Windowsversionen diese Funktionen nicht mehr gibt. Und dann funktionieren auch alle Programme, die die nutzen, nicht mehr... |
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 01.09.10 03:10
Xion hat folgendes geschrieben : | funktioniert wie eine kleine Datenbank |
Diese Beschreibung hört sich eher nach XML an. Dort kannst du via XPath auch Abfragen wie diese machen: XML-Daten 1:
| sum(Test/*/Betrag[@x > 6]) | Nimm alle Unterknoten von Test, deren Unterknoten Betrag ein Attribut x hat, das größer als 6 ist. Und jetzt gib mir die Summe der Beträge.
Natürlich kannst du dir die Knotenliste auch zurückgeben lassen. Und das alles nur über die MSXML Bibliotheken, die du einfach importieren kannst. (Und natürlich gibt es auch andere Bibliotheken.)
Diese Abfragen sind auch ziemlich schnell.
Hier in diesem Fall könnte eine solche Abfrage auch direkt die richtige Folge ermitteln.
|
|
del1312 
      
Beiträge: 190
|
Verfasst: Mi 01.09.10 08:50
Danke Leute für euche Tipps, also ich hab das jetzt so gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| var iFound, gefunden, i: Integer;
begin For i:=0 to listbox2.items.count-1 do if pos(edit6.text,listbox2.items[i])<>0 then begin Staffel:='01'; if i >25 then Staffel:='02'; if i >50 then Staffel:='03'; if i >75 then Staffel:='04'; if i >100 then Staffel:='05'; if i >125 then Staffel:='06'; if i >149 then Staffel:='07'; if i >171 then Staffel:='08'; if i >194 then Staffel:='09';
ShowMessage('Staffel: ' + Staffel + ' / Folge: '+ (IntToStr(i))+ ' - ' + ListBox2.Items.Strings[i]); end; Edit6.Text:=''; |
Jetzt klappt das soweit ganz gut, nur ein Problem hab ich noch. Ich hätte gern das die Groß/Kleinschreibung ignoriert wird. Momentan muss ich genau so den Text zum suchen eingeben
wie er hinterlegt ist. Also statt: "burns" muss ich es so momentan eingeben: "Burns" wie kann ich die am besten umsetzen? Wenn ich das noch hinbekomme ist mein kleines Tool echt
schon perfekt ;o) D
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 01.09.10 09:04
Beides vor dem Vergleich mit Pos mit LowerCase umwandeln. 
|
|
del1312 
      
Beiträge: 190
|
Verfasst: Mi 01.09.10 10:09
Cool vielen Dank! jetzt klappt alles
Eins hab ich noch, wie kann ich in einem Namen das Zeichen _ mit einem Leerzeichen ersetzen?
|
|
trm
      
Beiträge: 491
Erhaltene Danke: 19
Windows 7x64
Delphi 7
|
Verfasst: Mi 01.09.10 10:21
_________________ In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege
|
|
del1312 
      
Beiträge: 190
|
Verfasst: Mi 01.09.10 10:31
Ah wieder was gelernt, vielen Dank jetzt bin ich rundum zufrieden  ) Ihr seid klasse hier im Forum 
|
|
|