Utiliza las etiquetas GeSHi para poner el código.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Text: TextFile;
Buffer, Archivo: string;
Lines: integer = 0;
Size: integer = 0;
begin
{$I-}
Archivo:= 'C:\prueba.txt';
AssignFile(Text, Archivo);
FileMode:= 0; //ReadOnly
Reset(Text);
if IOResult = 0 then
begin
while not EOF(Text) do
begin
ReadLn(Text, Buffer);
Inc(Lines);
Size:= Size + Length(Buffer);
end;
CloseFile(Text);
WriteLn('Numero de lineas: ', Lines);
WriteLn('Numero de caracteres: ', Size);
end else
WriteLn('Se produjo un error abriendo el archivo: ', Archivo);
{$I+}
Readln;
end.
Está hecho en Delphi pero debería funcionar en FreePascal.
Las directivas
{$I-} y
{$I+} son para controlar los errores de tipo Input/Output. Si la función IOResult() devuelve 0 es que el archivo se abrió con éxito. FileMode es una variable de Delphi que establece el modo de apertura de un archivo, por defecto, se abren los archivos en modo lectura y escritura, el 0 es modo lectura.
Saludos.