ListView i błąd "List index out of bounds (0)

0

Witam.

Jak w temacie a dokładniej jak się go pozbyć.
Występuje on w takim zdarzeniu :

Mam sobie ListBox z plikami i ListView pokazuujący dane z tych plików.

Mam obsługe sortowania taką :

[code]var
SortedColumn: Integer;
Descending: Boolean;

procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
TListView(Sender).SortType := stNone;
if Column.Index SortedColumn then
begin
SortedColumn := Column.Index;
Descending := False;
end
else
Descending := not Descending;
TListView(Sender).SortType := stText;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin

if SortedColumn = 0 then
Compare := CompareText(Item1.Caption, Item2.Caption)
else if SortedColumn > 0 then
Compare := CompareText(Item1.SubItems[SortedColumn-1],
Item2.SubItems[SortedColumn-1]);
if Descending then Compare := -Compare;

end; [/code]

Klikam na jakiś plik i pokazuje mi jego zawartość.
Daje posortuj jakąś kolumne (obojętnie którą). I jest OK.
teraz klikam w inny plik i zong. Właśnie teraz wywala mi ten błąd.

Co mam z tym fantem zrobić??

THX

0

Znalazłem rozwiązanie, błąd jest wtedy, gdy Items=0.
A tak przy okazji, możesz mi napisać, jak odczytać z pliku datę modyfikacji, utworzenia i otworzenia?
Bardzo był bym wdzięczny, bo właśnie mi to jest potrzebne.
[email protected]

procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
if TListView(Sender).Items.Count>0 then
begin
TListView(Sender).SortType := stNone;
if Column.Index SortedColumn then
begin
SortedColumn := Column.Index;
Descending := False;
end
else
Descending := not Descending;
TListView(Sender).SortType := stText;

end;
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
begin
if TListView(Sender).Items.Count>0 then
begin
if SortedColumn = 0 then
Compare := CompareText(Item1.Caption, Item2.Caption)
else if SortedColumn > 0 then
Compare := CompareText(Item1.SubItems[SortedColumn-1],
Item2.SubItems[SortedColumn-1]);
if Descending then Compare := -Compare;
end;
end;

0

Niestety nadal wyskakuje mi ten błąd : "List index out of bounds (0)"
Teraz - niewiem jak było wcześniej - zamiast 0 jest teraz 1, 2 i inne.

Może jakies inne rozwiązanie.

PS.

Co do twojego problemu to niestety ale nieznam rozwiązania.

0

niechce mi sie analizować tego całego kodu, ale może chodzi o to:

http://4programmers.net/view_faq.php?id=186

?

PS: jeśli masz jakiś problem z ListView to włącz sobie FAQ, kliknij Ctrl+F i wpisz tam 'ListView' i pokolei bedziesz widział pytania dotyczące wlaśnie listview. wtedy nie musisz przeglądać tych prawie 300 pytań, bo doszedłem do takiego wniosku ze niechciało ci sie ich przejrzeć :-)

0

Jarekow2 może to ci cos da:

Jak pobrać datę i czas ostatniej modyfikacji pliku

[code]var
plik : integer;
dataiczas : TDateTime;
begin
plik:= FileOpen('tu nazwa pliku', fmOpenRead + fmShareDenyNone);
dataiczas:= FileDateToDateTime (FileGetDate(plik));
FileClose(plik);
Label1.Caption:=DateTimeToStr(dataiczas);
end;...
[/code]

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