{
Return string with reverse lines order.
}
function ReverseLines(arg:String):String;
var s:String; lines,i:Integer;
 procedure Cleanup(how:Integer);
 begin
  s:='';                     // Clear all local strings.
  if (how<>0) then begin
   lines:=text_new;          // Local object's constructors.
  end else begin
   FreeAndZero(lines);       // Local object's destructors.
  end;
 end;
begin
 Cleanup(1);
 iNul(StringToText(lines,arg));
 for i:=text_numln(arg)-1 downto 0 do s:=s+text_getln(lines,i)+EOL;
 ReverseLines:=s;
 Cleanup(0);
end;
