[Delphi] Ini.ReadSections i Access Violation

0
procedure Wczytaj(FileSrc: String; var ListView: TJvListView);
var
  Ini: TIniFile;
  Sekcje, PodSekcje: TStrings;
  Count: Integer;
begin
  ListView.Clear;
  Ini := TIniFile.Create(FileSrc);
  Ini.ReadSections(Sekcje);
  for Count := 0 to Sekcje.Count do
  begin
    ListView.AddItem(Sekcje.Strings[Count], nil);
    Ini.ReadSectionValues(Sekcje.Strings[Count], PodSekcje);
    ListView.Items[Count].SubItems := PodSekcje;
  end;
  Ini.Free;
end;

Czemu juz przy Ini.ReadSections(Sekcje);wywala mi access violation?! 8-0

0

nie stworzyłeś obiektu Sekcje. I przy okazji - używaj TStringList zamiast TStrings - TSTrings to klasa abstrakcyjna, jej metody są implementowane w klasach potomnych, jak właśnie TStringList.

0
Ktos napisał(a)

nie stworzyłeś obiektu Sekcje. I przy okazji - używaj TStringList zamiast TStrings - TSTrings to klasa abstrakcyjna, jej metody są implementowane w klasach potomnych, jak właśnie TStringList.

No wiesz, jakbym nie probowal tworzyc to bym tutaj nie pisal (164 posty z czego moze 5 tematow z problemami, wiec pytan czesto nie zadaje)...
No ale faktycznie, pomylilem sie z tym TStrings... [wstyd]

0

Spójrz jeszcze raz na swój kod z moimi dopiskami...

procedure Wczytaj(FileSrc: string; var ListView: TJvListView);
var
  Ini: TIniFile;
  Sekcje, PodSekcje: TStrings;
  Count: Integer;
begin
  ListView.Clear;
  Ini := TIniFile.Create(FileSrc);
  { tutaj wczytuje do obiektu Sekcje. Ale obiekt sekcje NIE ISTNIEJE! Więc tworzymy go }
<b>  Sekcje := TStringList.Create;</b>
  { i od razu tworzymy podsekcje, które będą potrzebne później }
<b>  Podsekcje := TStringList.Create;</b>
  Ini.ReadSections(Sekcje);
  for Count := 0 to Sekcje.Count do
  begin
    ListView.AddItem(Sekcje.Strings[Count], nil);
    Ini.ReadSectionValues(Sekcje.Strings[Count], PodSekcje);
    ListView.Items[Count].SubItems := PodSekcje;
  end;
  Ini.Free;
end;

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