Prueba este código:
Código Delphi
[-]
procedure CompressBlankLines(InputFileName, OutputFileName: String);
var
InputFile, OutputFile: TextFile;
Line: String;
begin
AssignFile(InputFile, InputFileName);
Reset(InputFile);
AssignFile(OutputFile, OutputFileName);
Rewrite(OutputFile);
while not Eof(InputFile) do
begin
ReadLn(InputFile, Line);
if Trim(Line) = '' then
begin
repeat
ReadLn(InputFile, Line);
until Trim(Line) <> '';
WriteLn(OutputFile, '');
end;
WriteLn(OutputFile, Line);
end;
CloseFile(InputFile);
CloseFile(OutputFile);
end;
No funciona sobre un memo, sino directamente sobre el archivo en disco, pero creo que te haces la idea.
// Saludos