Autor Beitrag
del1312
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 31.08.10 22:37 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
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:

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.09.10 03:10 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
funktioniert wie eine kleine Datenbank
Diese Beschreibung hört sich eher nach XML an. Dort kannst du via XPath auch Abfragen wie diese machen:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mi 01.09.10 08:50 
Danke Leute für euche Tipps, also ich hab das jetzt so gemacht:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.09.10 09:04 
Beides vor dem Vergleich mit Pos mit LowerCase umwandeln. ;-)
del1312 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mi 01.09.10 10:09 
Cool vielen Dank! jetzt klappt alles :D

Eins hab ich noch, wie kann ich in einem Namen das Zeichen _ mit einem Leerzeichen ersetzen?
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Mi 01.09.10 10:21 
user profile icondel1312 hat folgendes geschrieben Zum zitierten Posting springen:
Cool vielen Dank! jetzt klappt alles :D

Eins hab ich noch, wie kann ich in einem Namen das Zeichen _ mit einem Leerzeichen ersetzen?


Es gibt z.B. StringReplace.

ausblenden Delphi-Quelltext
1:
2:
3:
       DEINSTRING := StringReplace(DEINSTRING, '_'#32, [rfReplaceAll]);
ODER zum besseren Verständnis:
       DEINSTRING := StringReplace(DEINSTRING, '_'' ', [rfReplaceAll]);


rfReplaceAll ersetzt ALLE _ im String. Ohne rfReplaceAll wird nur das erste gefundene ersetzt :)

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
del1312 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mi 01.09.10 10:31 
Ah wieder was gelernt, vielen Dank jetzt bin ich rundum zufrieden :o) Ihr seid klasse hier im Forum :wink: :D