Chciałem wygenerować listę jednokierunkową spisującą dane z ListView znajdującego się na innej formatce. Podczas próby wykonania procedury jednak wyskakuje mi AccessViolation. I to kilkakrotnie. Pamiętam, jak miałem ten problem podczas wczytywania na ListView z pliku i tam wystarczyło zmienić ilość iteracji z pętli for, tutaj to jednak nie pomaga. Gdzie leży problem?


var
AtList : PElement;
Root : PElement;
NewOne : PElement;
begin
for i := 0 to (MainForm.ListProszek.Items.Count - 1) do
    begin
      New(NewOne);
      NewOne^.Dane.Name := MainForm.ListProszek.Items[i].Caption;
      if Root = nil then
        begin
          NewOne^.Next := Root;
          Root := NewOne;
        end
      else
        begin
          AtList := Root;
          while (AtList^.Next <> nil) do
            begin
              AtList := AtList^.Next;
            end;
          AtList^.Next := NewOne;
          NewOne^.Next := nil;
        end;
    end;
end;  

/// Dodaje tu wątek,bo stwierdziłem, że to lepszy dział dla mnie a temtego nie usunę, bo go w ogóle na liście wątków nie widzę.