Vielen Dank für die schnellen Antworten!
ich habe die Zeile übernommen (angepasst):
tndatnam := TPath.Combine(TPath.GetSharedDocumentsPath, '/tnliste.txt');
Der Fehler bleibt aber bestehen.
Bei der Verwendung von TPath.Combine bitte das "/" weglassen. Die Methode TPath.Combine kümmert sich selbst darum, dass zusammenzukitten.
Danach versuch bitte mal ein FileExists auf "tndatnam", einfach um sicherzugehen, dass die Datei auch gefunden wird.
Wenn es mit korrektem Pfad immer noch nicht funktioniert, würde ich vermutlich mal mir die Berechtigungen anschauen:
Ich habe seit Ewigkeiten in meinen Apps nicht mehr den externen Speicher angesprochen, von daher weiß ich leider nicht mehr genau, wie es da mit den Berechtigungen aussieht, aber es gibt zwei Berechtigungen dafür, die man unter Projekt -> Optionen -> Anwedung -> Berechtigungen findet. Genauer gesagt gibt es bei den "gefährlichen" Berechtigungen "Externen Speicher lesen" und "Externen Speicher schreiben".
Es ist möglich, dass in deinem Fall die Berechtigung für das Lesen des externen Speichers notwendig ist, ich bin mir aber wie gesagt nicht mehr sicher.
Sollte die Berechtigung notwendig sein, müsstest du dir mal anschauen, wie man zur Laufzeit abgefragte Berechtigungen setzt. Ich bin mir ebenfalls gerade nicht sicher, ob das Anhaken bei dieser Berechtigung in den Projektoptionen ausreicht, oder ob man mit PermissionsService.RequestPermissions arbeiten muss.