Hallo Lee,
hast du schon mal probiert, das laufen zu lassen ?
Ich würde mal vermuten, dass in der Zeile
v.z:=ReadNumber(s,i);
in der Prozedur ReadLine eine
Exception (
Access Violation) kommt.
Warum?:
hDreieck ist ein Zeiger auf TDreieck und er ist = Nil, zeigt also ins Nichts.
Ins "Nichts" kannst du aber keine Daten schreiben.
Abhilfe:
New(hDreieck)
als erste Zeile in die Prozedur ReadRecord einfügen.
Dann wirst du in der Zeile
Dreiecke.Add(hDreieck);
in der Prozedur ReadRecord eine
Exception Exception (
Access Violation) kriegen.
Warum?!
Die TList Dreiecke existiert noch nicht.
Abhilfe:
Dreiecke:=TList.Create
als erste Zeile in der Prozedur Test einfügen.
Und wenn du dann irgendwann Dreiecke nicht mehr brauchst musst du erstens für alle Einträge in Dreiecke ein Dispose machen und anschließend ein Dreiecke.Free.
Letzteres solltest auch im except Block in Test machen.
Alternativ kannst du es so machen, wie Bummi es vorschlug.