Der Wert ist vor dem aufrufen zugewiesen, er ist bei der größeren Datei bei 2, bei der zweiten Datei bei 1. Beides sind meines Wissens nach eine gültige Zahl für SetLength()
Nochmals zum mitschreiben:
Die Fehlermeldung, welche uns der TE gepostet hat, wird
NICHT durch die Funktion SetLength() erzeugt.
Egal was in "TRXHead.Materials" steht, wirft SetLength() niemals diesen Exceptiontyp.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.