Para obtener directorios de sistema puedes revisar estos hilos:
http://www.clubdelphi.com/~marcsc/fo...ad.php?t=26419
Para comprobar si un fichero existe, tienes la función FileExists de la unit
System.SysUtils; Aquí tienes la ayuda:
http://docwiki.embarcadero.com/Libra...ils.FileExists
En es misma unit, encontrarás muchos otros procedimientos útiles sobre ficheros:
http://docwiki.embarcadero.com/Libra...Utils#Routines
Para abrir un fichero, tal y como se hare en el ejemplo que has puesto, aquí tienes los procedimientos que se usan:
http://docwiki.embarcadero.com/RADSt...Output_Support
Y aquí, por ejemplo, tienes código de ejemplo de cómo utilizarlas:
http://docwiki.embarcadero.com/CodeE...Append_(Delphi)
http://docwiki.embarcadero.com/CodeE...ckRead_(Delphi)
http://docwiki.embarcadero.com/CodeE...ewrite_(Delphi)