Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Split String für ListView (https://www.delphipraxis.net/174391-split-string-fuer-listview.html)

Madara Uchiha 19. Apr 2013 15:14

Split String für ListView
 
Hallo,

Ich habe einen String in diesem Format in einem Edit-component:

Delphi-Quellcode:
Name1###Name2###name3
Ich möchte die ###'s entfernen und dann folgendermaßen in ein ListView eintragen:

ListView Item 1 = name1
ListView SubItem 1 = name2
ListView SubItem 2 = name3

Wie mache ich das am besten?

Der schöne Günther 19. Apr 2013 15:37

AW: Split String für ListView
 
In Sachen Text aufsplitten:
  1. TStringList erstellen
  2. Delimeter auf '###' setzen
  3. DelimetedText auf den Text deines Edits setzen
  4. meineStringList[Nummer] gibt dir jetzt die Namen an

DeddyH 19. Apr 2013 15:39

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:
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;
[/edit2]

Madara Uchiha 19. Apr 2013 16:23

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.

DeddyH 19. Apr 2013 16:28

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 09:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz