Du erzeugst zwar die Liste, hast darin jedoch noch keine Einträge - also Pointer.
Als nextes versuchst Du auf das 1. Element der Liste zuzugreifen (was noch nicht existiert) und also "knallt" es.
Versuch mal so:
Delphi-Quellcode:
type
TTest = Record // oder Object
//irgendeinInhalt
end;
TTestZeiger = ^TTest;
var MeineListe : TList;
MeinZeiger : TTestZeiger;
i : Integer;
begin
MeineListe := TList.Create;
begin // while oder for - Schleife
TList.Add(new(MeinZeiger)); // erzeugt Neues TTest-Object/Record/WasAuchImmer
// und liefert einen TTestZeiger zurück, der direct
// mit Add an's Ende der MeineListe gehangen wird
end;
// Wenn Du fertig bist, solltest Du nicht vergessen, MeineListe wieder freizugeben
// und natürlich auch die Objecte , die Du mit new() erzeugt hast
for i := MeineListe.Count-1 downto 0 do
begin
Dispose(TTestZeiger(MeineListe[i])); // gibt den für das i'te TTestObject reservierten
// Speicher frei
MeineListe.Delete(i); // gibt den Zeiger auf das nun schon nicht mehr
// gültige i'te TTest-Object frei
end;
MeineListe.Free; // fertig!
end;