Ilość znaków w linii TStringList

0

Witam
Mam kilka problemów, z programem, który staram się wreszcie skończyć.

Tworzę zmienną typu TStringList, w której przechowuje określone teksty, o różnej ilości znaków każda. Zdarza się, że linie mają powyzej 800 znaków.
Okazuje się, że w takim przypadku ucinane są znaki powyżej tego 800.
Rodzi się pytanie, czy linia TStringList jest ograniczona do iluś znaków? Myślałem, że jedna linia jest typu String, czyli domyślnie AnsiString, czyli ~2^31 znaków...
Proszę o wyjaśnienie tej kwestii...

Druga sprawa.
Mój program nagminnie korzysta z komponentu TListview. Nie wiedzieć czemu, nie są wyświetlane całe teksty danej linii... Np. mam w komponencie 4 kolumny, i powiedzmy 1000 wierszy... W powiedzmy 2 kolumnie
w każdym wierszu przechowywane są długie napisy, powyżej 800 znaków... I one są ucinane (nie pokazywane)... Co odpowiada za taki stan rzeczy?

Trzecia Sprawa.
Program używa wspomnianego wyżej komponentu TListView, z bardzo dużą ilością wpisów (obecnie ~3400 wierszy, 6 kolumn)... Przy szybkim przesuwaniu kolumn w jedną i druga stronę (zmianie rozmiaru) dostaje błąd OutOfSystemResources - program wysypuje się totalnie... Debugger pokazuje mi, że błąd jest gdzieś w pliku TCoolTrayIcon (Jouni Airaksinen). Miał ktoś taki problem (Delphi2005PE)?
Poleci mi ktoś alternatywny komponent do obsługi tray'a? (chodzi o podstawowe operacje na nim, jak pokaż forme, ukryj, pokaż dymek z tekstem...)
A jest jakiś darmowy szybszy komponent taki jak VCl'owski TListView? Co by nie miał problemów z taką ilością danych? Mam 512 MB Ramu, czy możliwym jest, że te troche wpisów zatkało mi pamięć, no nie wydaje mi się, zwłaszcza, że Menadżer zadań pokazuje mi uzycie na poziomie 15MB?

To by było na tyle. Mam nadzieję, że jasno się wyraziłem i ktoś z Was mi pomoże...
Dzięki z góry ;)
Pozdr, Pepe

0

String nie jest limitowany do 800 znaków.
Jak ładujesz te stringi do TStringList?

800 znaków w rubryce ListView - tak długi teks nie może być widoczny w całości.

Skoro trzymasz dane w TStringList to lepiej utworzyć ownerdraw/virtual ListView - taką,
która nie trzyma niepotrzebnie kopii tych stringów.

0
kik napisał(a)

String nie jest limitowany do 800 znaków.
Jak ładujesz te stringi do TStringList?

var
Lista : TStringList;
begin
Lista:=TStringList.Create;
try
Lista.Add('Jakis dluuuuuuuuuuuuuugi tekst');
finally
Lista.Free;
end;
end;

kik napisał(a)

800 znaków w rubryce ListView - tak długi teks nie może być widoczny w całości.

Nie jest... Dlaczego?
kik napisał(a)

Skoro trzymasz dane w TStringList to lepiej utworzyć ownerdraw/virtual ListView - taką,
która nie trzyma niepotrzebnie kopii tych stringów.

 Mógłbyś rozwinąć tę myśl? najlepiej na przykładzie, coś w stylu jak podałem powyżej. Dzięki.
0

Z cała pewnością TStringList znosi wiecej niz 800 znaków. Coś innego ci obcina - sprawdz. Ja ładuję pliki tekstowe powyżej 1000 znaków i działa znakomicie. Być może przypisywanie kuleje, lub tracisz znaki gdzies po drodze, ja wczytuje linię prosto z pliku.
Andrzej Dąbrowski

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