Hallo, 
Hier mal als beispiel, für genaue erklärungen einfach mal in die Online-Hilfe gucken 

.
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 
 | procedure WirteToFile(aFileName, aText : STRING);VAR
 f : TextFile;
 BEGIN
 AssignFile(f, aFileName);
 IF FileExists(aFileName) THEN
 Append(f)
 ELSE
 Rewrite(f);
 WriteLn(f, aText);
 CloseFile(f);
 END; // Wirte To File
 
 function ReadFromFile(aFileName : STRING) : STRING;
 VAR
 f : TextFile;
 ActLine : STRING;
 BEGIN
 RESULT := '';
 IF FileExists(aFileName) THEN BEGIN
 AssignFile(f);
 Reset(f);
 While NOT EOF(f) DO BEGIN
 ReadLn(f, ActLine);
 IF Result <> '' THEN
 Result := Result + #13#10;
 Result := Result + ActLine;
 END; // Bis zum Dateiende
 CloseFile(f);
 END; // Datei Existiert
 END; // ReadFromFile
 | 
		
	  
Die erste Procedure schreibt einen Sting in die angegebene Datei. Ist diese vorhanden wird der Text an den bestehenden angehängt. Exestiert sie nicht wird sie angelegt. Der übergebene FileName muss den kompletten Pfad und den Dateinen enthalten.
Die zwiete Funktion Liest alle Zeilen aus einer Datei und liefed diese als String zurück. Sind mehr als eine Zeile enthalten werden Zeilenumbrüche in den Ergebnisstring eingefügt.
Das ganze habe ich eben hier im Browser getippt also musst du unter Umständen den einen oder anderen Tippfehler korrigieren.
Verbesungsvorschlag: Die sicherheit dieser Methoden kann durch weiter Fehlerabfänge erhöht werden siehe hierzu 
IORESULT und 
TRY EXCEPT.
Gruß
Klabautermann