AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

List index out of bounds (10)

Ein Thema von lucius · begonnen am 17. Okt 2005 · letzter Beitrag vom 17. Okt 2005
Antwort Antwort
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#1

List index out of bounds (10)

  Alt 17. Okt 2005, 15:03
Hallo Leute, ich hab ne Save und Load Function fuer eine Listview, das speichern geht gut aber wenn ich die File wieder im Listview laden moechte und Sie mehr als 10 Eintraege hat kriege ich ein List index out of bounds error.
Kann mir da jemand bitte helfen?
Dank im voraus.

Delphi-Quellcode:
procedure TMainForm.LoadAsActionExecute(Sender: TObject);
begin
  with OpenDialog do
  begin
  If Execute then
    begin
    ListView.Items.Clear;
    LoadListViewToFile(ListView, FileName);
    end
  else
    exit;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 15:06
Dazu solltest Du mal den Code von DIr zeigen, wo der Fehler auftritt, da es sehr wahrscheinlich Dein Fehler ist Nur ins Blaue zu raten bringt hier nicht viel.

......

P.S.: In der Zwischenzwit hast Du Code gepostet Aber interessant wäre die Methode "LoadListViewToFile"
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 15:10
Also hier den code zum laden der File.

Delphi-Quellcode:
procedure TMainForm.LoadListViewToFile(AListView: TListView; sFileName: string);
var
  F: TFileStream;
  IdxItem, IdxSubItem, IdxImage: Integer;
  W, ItemCount, SubCount: Word;
  pText: PChar;
  PTemp: PChar;
  MySignature: array [0..2] of Char;
  sExeName: string;
begin
  with AListView do
  begin
    ItemCount := 0;
    SubCount := 0;

    sExeName := ExtractFileName(sFileName);

    if not FileExists(sFileName) then
    begin
      MessageBox(Handle, PChar(Format(Msg1, [sExeName])), 'I/O Error', MB_ICONERROR);
      Exit;
    end;

    F := TFileStream.Create(sFileName, fmOpenRead);
    F.Read(MySignature, SizeOf(MySignature));

    if MySignature <> 'LVFthen
    begin
      MessageBox(Handle, PChar(Format(Msg2, [sExeName])), 'I/O Error', MB_ICONERROR);
      Exit;
    end;

    F.Read(ItemCount, SizeOf(ItemCount));
    Items.Clear;

    for idxItem := 1 to ItemCount do
    begin
      with Items.Add do
      begin
        //Read imageindex
        F.Read(SubCount, SizeOf(SubCount));
        //Read imageindex
        F.Read(IdxImage, SizeOf(IdxImage));
        ImageIndex := IdxImage;
        //Read the Caption
        F.Read(w, SizeOf(w));
        pText := StrAlloc(w + 1);
        pTemp := StrAlloc(w + 1);
        F.Read(pTemp^, W);
        StrLCopy(pText, pTemp, W);
        Caption := StrPas(pText);
        StrDispose(pTemp);
        StrDispose(pText);
        if SubCount > 0 then
        begin
          for idxSubItem := 1 to SubCount do
          begin
            F.Read(w, SizeOf(w));
            pText := StrAlloc(w + 1);
            pTemp := StrAlloc(w + 1);
            F.Read(pTemp^, W);
            StrLCopy(pText, pTemp, W);
            Items[idxItem - 1].SubItems.Add(StrPas(pText));
            StrDispose(pTemp);
            StrDispose(pText);
          end;
        end;
      end;
    end;

    F.Free;
  end;
end;
Der Fehler kommt sobald ich die File selektiert habe und Sie oeffnen moechte.
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 15:12
[Glaskugel]

du hast I vo0n 1 bis Count und
I geht von 0 bis Count-1

[/Glaskugel]


//EDIT1:
ICH kann hellsehen
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 15:16
Zitat von Kroko1999:
du hast I vo0n 1 bis Count und
I geht von 0 bis Count-1
Das ist es imo in diesem Fall nicht, weil da wo es darauf ankommt, arbeitet er mit "-1" Aber auf Anhieb sehe ich den Fehler auch nicht.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 15:16
Noch vergessen zu erwaehnen es ist eine Virtuelle Listview.
Der Load code ansich funzt, bei der Listview gehts schief.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: List index out of bounds (10)

  Alt 17. Okt 2005, 16:24
Nur um den thread an dieser Stelle sauber abzuschließen - Lucius verwaltet seine Daten in einer StringList (NewsList), deshalb muss der Code zum Laden der ListView so aussehen:

Delphi-Quellcode:
procedure TMainForm.LoadActionExecute(Sender: TObject);
begin
  with OpenDialog do
    If Execute then
    begin
      NewsList.LoadFromFile(FileName);
      ListItems.Count := NewsList.Count;
      ListView.Invalidate;
    end
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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