String na TStringsList

0

Witam. Mam w komórce w listview jakiś tekst z kilkoma liniami:

linia 1
linia 2
linia 3
linia 4

Chcę te linie dodać z osobna do TStringList bym mógł np. potem usunąć linię pierwszą itp.

Próbowałem tak:

s.Add(Lista.Items.Item[1].SubItems[5]);

Tylko że w ten sposób całą komórkę dodaje jako jeden String w StringList. Jak to podzielić na pojedyncze?

Zawsze używałem do tego wizualnego Memo, tzn do tego dodawałem sobię linie i potem mogłem usuwać, modyfikować itp, jednak to rozwiązanie mi i innym wydaje się nieprofesjonalne, chcę się przenieść na stringlist no ale z tego powodu na razie nie mogę :/

Jak mogę to zrobić?
Pozdrawiam

0

Czytam to kilka razy i nie mogę zrozumieć co chcesz osiągnąc. Pokazujesz kod:

s.Add(Lista.Items.Item[1].SubItems[5]);

Jeżeli S to TStringList, a Lista to TListView to przecież dodajesz piąty subitem (fizycznie siódma kolumna dla widoku vsReport) elementu o indeksie 1 (czyli fizycznie drugi wiersz dla widoku vsReport). Możesz przechowywać cały wiersz w TStringList i zrobisz to w pętli. Najpierw tworzysz lub ewentualnie jak już jest stworzona to czyścisz TStringList, później dodajesz Caption, a później w pętli SubItemy. Napisz może po ludzku przykład co masz w wierszu w swoim TListView i co później chcesz mieć w TStringList. Bo podany przez Ciebie kod spowoduje, że wspomniany tekst masz w jednym wierszu w TStringList. A wiadomo cała zawartośc TStringList bez podziału na wiersze będzie w S.Text. A i dodawanie tekstu do widocznego Memo jeżeli nie trzeba go prezentować użytkownikowi jest bez sensu, do tych celów wykorzystuje się właśnie niewizualne obiekty typu TStringList.

0

Chodzi mi by jedną komórkę która zawiera adresy www, konwertowało na stringlist tak by każdy adres (czyli linia) była osobno, bym np. pierwszą linię mógł usunąć za pomocą s.delete(0);

Zrobiłem to tymczasowo tak, że to memo konwertuje mi string na stringlist. Tzn string trafia do memo, i potem linie memo do stringlist. Taki rezultat właśnie porządam, ale czy to nie amatorskie używać w ten sposób memo? Może da się w lepszy sposób?

  temp.Text:=(Lista.Items.Item[1].SubItems[5]);  // do memo dodaje moją komórke czyli kilka linii (lub czasami jedna)
  linki:=TStringList.Create; // tworzę stringlist o nazwie linki
  linki.AddStrings(temp.Lines);  // dodaje linie memo do stringlist

Lista.Items.Item[1].SubItems[5] to przykładowa komórka

0

Przypisz ten twój tekst do StringList.Text a potem sobie używaj StringList.Lines ;)

0
  linki:=TStringList.Create; // tworzę stringlist o nazwie linki
  linki.Text:=Lista.Items.Item[1].SubItems[5];
  linki.Delete(0);
0
pelsta napisał(a)
  linki:=TStringList.Create; // tworzę stringlist o nazwie linki
  linki.Text:=Lista.Items.Item[1].SubItems[5];
  linki.Delete(0);

To działa tak jak chciałem, dzięki :) !

0

A teraz wiem o co Tobie chodziło. Jakoś po czytaniu pierwszego posta umykalo mi pierwsze zdanie Mam w komórce w listview jakiś tekst z kilkoma liniami. No nic, ważne że problem rozwiązany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1