![]() |
Split String für ListView
Hallo,
Ich habe einen String in diesem Format in einem Edit-component:
Delphi-Quellcode:
Ich möchte die ###'s entfernen und dann folgendermaßen in ein ListView eintragen:
Name1###Name2###name3
ListView Item 1 = name1 ListView SubItem 1 = name2 ListView SubItem 2 = name3 Wie mache ich das am besten? |
AW: Split String für ListView
In Sachen Text aufsplitten:
|
AW: Split String für ListView
Nicht schnell, aber schnell implementiert: Anlegen einer Stringliste mit StrictDelimiter auf true und Delimiter auf '#', DelimitedText zuweisen und alle leeren Zeilen löschen. Anschließend String an Index 0 der Caption des ListItems zuweisen, Index 0 löschen und dann SubItems die Stringliste zuweisen.
[edit] @Günther: Delimiter ist ein Char und kein String, leider [/edit] [edit2] Noch einfacher:
Delphi-Quellcode:
[/edit2]
procedure TForm24.Button1Click(Sender: TObject);
const MyText = 'Name1###Name2###Name3'; var sl: TStringlist; Item: TListItem; begin sl := TStringlist.Create; try sl.Text := StringReplace(MyText, '###', sLineBreak, [rfReplaceAll]); if sl.Count > 0 then begin Item := ListView1.Items.Add; Item.Caption := sl[0]; sl.Delete(0); Item.SubItems.Assign(sl); end; finally sl.Free; end; end; |
AW: Split String für ListView
Danke das funktioniert wunderbar :)
Kannst du noch grob erklären was in welche zeile passiert? Weil, ich will es verstehen und nicht einfach kopieren. |
AW: Split String für ListView
Ich ersetze einfach die "###" jeweils durch einen Zeilenumbruch und packe das Ergebnis in die Stringliste, damit habe ich die Teile dann zeilenweise. Anschließend erzeuge ich das ListItem und weise ihm als Caption die erste Zeile der Liste zu. Diese lösche ich dann und weise die verbleibende Liste den SubItems zu. Das klappt, weil beide von TStrings abstammen. Das war schon alles.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz