ReadLn liest eine Zeile von der Konsole oder aus einer Textdatei, Read liest einen Datensatz aus einer typisierten Datei (also zB einen Integer aus einem File of Integer). Du hast bei dir allerdings eine untypisierte Datei, also kann Read nicht "wissen", wie viele Bytes ein Datensatz sind - also kann man es nicht kompilieren.
Um aus einer typisierten Datei lesen zu können, müssen die Typen (also Records meistens), die der Datei zu Grunde liegen, eine feste Grösse haben. Das bedeutet widerum, dass du keine dynamischen Arrays und keine Strings verwenden kannst.
Vielleicht wäre die
dpCollection was für dich?