Autor |
Beitrag |
patrick dee
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Mo 21.05.07 08:01
Morgen zusammen
habe eine Frage : Habe eine ListBox die mir als Playliste dient.
8000-01 ABBA WATERLOO 03:19
8545-15 BEE GEES WORD 02:55
Wie bekomme ich es hin das die Länge der Titel untereinander stehen. Könnte doch mit Pos suchen irgenwie gehen. Also die Länge des Titels herausnehmen und nach rechts verschieben - immer um den gleichen Abstand von links.
Müßte irgendwie nach den Doppelpunkt gesucht werden - oder ?
Kann mir jemand Helfen ???
Danke und einen sonnigen Tag
Patrick
_________________ Glauben heißt nichts wissen ...
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Mo 21.05.07 08:46
Hallo,
Eine Möglichkeit:
www.delphipraxis.net...n+sortieren+tlistbox
statt
function CompareInt(List: TStringList; Index1, Index2: Integer): Integer;
etwas eigenes komponieren.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function CompareLast5(List: TStringList; Index1, Index2: Integer): Integer; var i : integer; S1,S2 : string; begin I := length(List[Index1]); IF i > 5 then S1 := Copy(List[Index1],i-5,5) else S1 := List[Index1]; I := length(List[Index2]); IF i > 5 then S1 := Copy(List[Index2],i-5,5) else S1 := List[Index2]; CompareLast5 := CompareText(S1,S2); S1:=''; S2:=''; end; |
Besser verwendest Du mehrere Spalten.
Oder soetwas www.delphi-forum.de/...;highlight=sortieren ?
Gruß Horst
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 21.05.07 09:37
Hallo,
patrick dee hat folgendes geschrieben: | Wie bekomme ich es hin das die Länge der Titel untereinander stehen. Könnte doch mit Pos suchen irgenwie gehen. Also die Länge des Titels herausnehmen und nach rechts verschieben - immer um den gleichen Abstand von links.
Müßte irgendwie nach den Doppelpunkt gesucht werden - oder ?... |
vermute eher das er das erreichen möchte:
Quelltext 1: 2:
| 8000-01 ABBA WATERLOO 03:19 0815-15 A-AH VELVET 02:55 |
Sind Die Anzahl Zeichen der ID('8000-01') und der Länge des Titels('03:19') immer gleich?
Dann brauchst Du nur den längsten Eintrag suchen.
Ps.: Ich würde eine ListView mit drei Columns nehmen, mit ListView.RowSelect = True
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
patrick dee 
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Mo 21.05.07 10:02
Hei Danke schon mal für die Tips.
Also die Playlisten lade ich in die ListBox mit LoadFromFile. Die Zeitangabe wie lang der Titel ist sind immer gleich.
Habe auch schon überlegt - ob das geht ???? - die Liste umzubauen. Da die Nummern 800-01 in einer Paradox Datenbank drinnen stehen müsste es doch auch gehen das man die Original Liste lädt die als 21-05-07.mr1 File vorliegt. Und dann die Nummer durchgeht und die Liste neu aufbaut so das ich auch einen Abstand zwischen Titel und Interpret habe.
8000-01 ABBA WATERLOO 03:30
8001-05 BEE GEES WORDS 02:59
Und dann als 21-05-07.li1 speichert und diese in der ListBox zu sehen ist.
Wäre natürlich noch übersichtlicher. Oder gibt es ein Elegantere Lösung ???
Danke an aller fleißigen Helfer
Patrick
_________________ Glauben heißt nichts wissen ...
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Mo 21.05.07 13:29
Hallo,
kann paradoxdateien nicht direkt mittels Delphi [url=www.byronref.com/rmb...pecs.htm]damit[/url] dort PXFORMAT.ZIP ->PXFMT.pas auslesen?
Dann kannst Du direkt die Spalten der Listbox richtig belegen.
Gruß Horst
|
|
patrick dee 
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Mo 21.05.07 15:49
Hallo Horst_H
wie rufe ich diese function auf mit einer ListBox1 ???
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function CompareLast5(List: TStringList; Index1, Index2: Integer): Integer; var i : integer; S1,S2 : string; begin I := length(List[Index1]); IF i > 5 then S1 := Copy(List[Index1],i-5,5) else S1 := List[Index1]; I := length(List[Index2]); IF i > 5 then S1 := Copy(List[Index2],i-5,5) else S1 := List[Index2]; CompareLast5 := CompareText(S1,S2); S1:=''; S2:=''; end; |
also ich blicke noch nicht durch. Danke aber für deine schnelle Hilfe
lg Patrick
_________________ Glauben heißt nichts wissen ...
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Mo 21.05.07 17:00
Hallo,
Uups , ich dachte Du hättest den Delphipraxis-Link durchgelesen...
Aber Du musst Die Funktion CompareLast5 mal testen , ob sie es so richtig tut, also ob da -4 oder -5 richtig ist.
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: 37: 38:
| function CompareLast5(List: TStringList; Index1, Index2: Integer): Integer; var i : integer; S1,S2 : string; begin I := length(List[Index1]); IF i > 5 then S1 := Copy(List[Index1],i-4,5) else S1 := List[Index1];
I := length(List[Index2]); IF i > 5 then S2 := Copy(List[Index2],i-4,5) else S2 := List[Index2]; CompareLast5 := CompareText(S1,S2); S1:=''; S2:=''; end;
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; begin sl := TStringList.Create; try sl.Assign(listbox1.Items); sl.CustomSort(CompareLast5); listbox1.Items.Assign(sl); finally sl.Free; end; end; |
Also einfach mal eine Listbox mit 19000,28000,37000,73000,81000,90000 füllen und testen was passiert
Gruß Horst
|
|
patrick dee 
      
Beiträge: 311
Win 98SE, WinXP
D3,D6
|
Verfasst: Mo 21.05.07 17:23
hallo horst_h
danke für die schnelle Antwort. Werde ich mal testen und melde mich dann wieder.
schönen Abend
patrick
_________________ Glauben heißt nichts wissen ...
|
|
|