Entwickler-Ecke
Sonstiges (Delphi) - Playliste erstellen aus einer anderen Text Datei
patrick dee - Di 05.06.07 12:30
Titel: Playliste erstellen aus einer anderen Text Datei
Hallo Leute,
Es geht um eine Erstellung einer Playliste. Ich habe eine fertige die immer mit dem Tagesdatum abgespeichert ist z.b. 05-06-07.ac1 Die Einträge sehen in dieser Liste so aus :
Delphi-Quelltext
1: 2: 3: 4: 5:
| 12 Uhr 5124-12 SHOUT SHOUT ROCKY SHARPE 02:44 5172-14 IT S SUCH A SMALL WORLD RODNEY CROWELL 03:18 5034-16 DON T DREAM IT S OVER CROWDED HOUSE 03:50 5128-02 EIN ENGEL WOHNT UNTERM DACH HOFFMANN & HOFFMANN 03:33 |
Wie kann ich nun diese List in die ListBox1 laden, das die Einträge so aussehen :
Delphi-Quelltext
1: 2: 3: 4: 5:
| 12 Uhr 5124-12 ROCKY SHARPE SHOUT SHOUT 02:44 5172-14 RODNEY CROWELL IT S SUCH A SMALL 03:18 5034-16 CROWDED HOUSE DON T DREAM IT S OVER 03:50 5128-02 HOFFMANN & HOFFMANN EIN ENGEL WOHNT UNTERM DACH 03:33 |
Wie man sehen kann, steht nach der Nummer der Interpret dann der Titel und die Länge.
Und das mit einem Abstand dazwischen um es besser lesen zu können.
Ich kann die Erstellung der 05-06-07.ac1 Files nicht ändern ist vorgegeben. Habe mir auch schon überlegt das man einen Button einbaut und wenn man auf diesen drückt wird die 05-06-07.ac1 von oben bis unten durchlaufen und jeder Eintrag in eine 2 Liste (StrList)gelegt.Wenn der Eintrag mit einer 5 beginnt soll die Trennung zwischen den Einträgen vorgenommen werden. Als vergleich könnte man in der Datenbank - ist Paradox - nachsehen und Eintragen.Evtl das ganze unter Tagesdatum ( Beispiel 05-06-07.pc1 ) abzuspeichern.
Habe aber auch alle Titel als Musik.Txt gespeichert. Wäre es da einfacher diese nachschau zu machen ? also ich suche wie geschrieben einen Weg dies Trennung durchzuführen.
Hoffe sehr das mir jemand dabei Helfen kann das umzusetzen.
Vielen Dank an alle schon mal im Voraus
Gruß Patrick
Gausi - Di 05.06.07 13:27
Ohne Zusatzinformationen wirst du das nicht hinbekommen. Woher soll man denn wissen, welches Leerzeichen den Künstler vom Titel trennt?
Ansonsten: Mit Copy kann man Teile eines Strings in einen neuen kopieren. Wenn die Zeitangaben und die Zahlen am Beginn jeder Zeile immer dieselbe Länge haben, sollte zumindest dieser Teil recht einfach gehen.
patrick dee - Di 05.06.07 14:12
Hei Gausi
Danke erstmal für deine Antwort.
Ja die ersten sieben Zeichen sind immer gleich lang
5100-01
5525-08
5689-09 usw.
LG Patrick
jakobwenzel - Di 05.06.07 14:15
Es geht darum, z.B. "Shout Shout" von "Rocky Sharpe" zu trennen.
Das Programm kann ja nicht wissen, dass es so heißt und nicht etwa so:
"Shout" von "Shout Rocky Sharpe", oder "Shout Shout Rocky" von "Sharpe".
patrick dee - Di 05.06.07 14:16
NACHTRAG :
In der Musik.txt stehen alle Musiktitel die ich habe so drinnen :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| 5072-17#NICKI#WIE IMMER#04:39#07#00:00#04:33## 5072-18#NICKI#HAST DU HEUTE ZEIT#03:28#07#00:00#03:23## 5072-19#NICKI#GOODBYE JANE#03:20#07#00:00#03:18## 5072-20#NICKI#GANZ TIEF INS HERZ#03:54#12#00:00#03:52## 5072-21#NICKI#HAST A BISSERL ZEIT FÜR MI#04:07#37#00:00#04:01## 5072-22#DRAFI DEUTSCHER#SHAKE HANDS#02:14#05#00:00#02:14## 5073-01#NICKI#NOBODY S PERFECT#03:57#00#00:00#03:51## 5073-02#PATRICK LINDNER#DIE KLEINEN DINGE DES LEBENS#03:20#07#00:00#03:18## 5073-03#ANNIE REISLER#GUARDIAN ANGEL#03:17#08#00:00#03:15## 5073-06#DINO PARISE#BELLA ITALIA |
Dachte man könnte die 05-06-07.ac1 liste durchsuchen und alle Einträge in die LsitBox2 schreiben. Wenn ein Eintrag mit beginnender 5 vorkommt in die Musik.Txt schauen und übernehmen. Durch die Trennungszeichen wäre es doch möglich die Abstände zu realisieren - ODER ?
lg Patrick
patrick dee - Mi 06.06.07 12:39
Hallo Leute,
hat keiner eine Idee für mich wie ich das obige Problem Lösen kann ? :?:
Danke
Patrick
Stefan.Buchholtz - Mi 06.06.07 13:06
Anhand des Trennzeichens kannst du natürlich problemlos die Spalten auftrennen. Die Listbox kann aber keine Spalten darstellen und eine Ausrichtung mit Leerzeichen würde nur funktionieren, wenn du einen Zeichensatz mit fester Breite wie Courier New verwendest. Für eine mehrspaltige Darstellung bieten sich TStringGrid oder TListView an.
Zum Aufsplitten der Zeile in die einzelnen Spalten habe ich hier noch eine Utility-Funktion rumfliegen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| function SplitFields(const ASource: String; const ADelim: Char): TStringDynArray; var idx : Integer; arrSize : Integer; p : Integer; len : Integer; begin len := Length(ASource); p := 1; idx := 0; arrSize := 10; SetLength(Result, arrSize);
Result[idx] := ''; while p <= len do begin if ASource[p] = ADelim then begin Inc(idx); if idx >= arrSize then begin arrSize := arrSize * 2; SetLength(Result, arrSize); end; Result[idx] := ''; end else begin Result[idx] := Result[idx] + ASource[p]; end; Inc(p); end; Inc(idx); SetLength(Result, idx); end; |
Stefan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!