Moin Daniel,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS.
Das die genannte Funktion bei einer nicht existierenden Datei immer ausgibt, dass sie ReadOnly ist ist nachvollziehbar.
Die Funktion FileGetAttr ist nur ein Wrapper um die
API-Funktion GetFileAttributes.
Diese Funktion gibt im Fehlerfalle -1 zurück, es sind also alle Bits gesetzt, so dass
jede Prüfung auf ein Attribut dieses als gesetzt erkennt.
Man muss erst einmal prüfen, ob der Funktionsaufruf überhaupt erfolgreich war (Rückgabewert <> -1) bevor man versucht daraus Attribute abzuleiten. Existiert die Datei nicht, müsste ein anschliessender Aufruf von GetLastError den Wert 2 zurückgeben (ERROR_FILE_NOT_FOUND).
Das andere Problem kann ich im Moment nicht nachvollziehen.