Creo que el error lo tienes en esta linea
Código Delphi
[-]suma := suma + StrToFloat(StringReplace(Memo2.Lines[i],',','',[rfIgnoreCase]));
Básicamente estás eliminando las comas para poder hacer el cambio de Str a Float, pero solamente eliminas la primera coma. Así que cuando hay más de 1 (1,000,000) te da el cascazo.
Ademas, el ignoreCase no tiene mucho sentido, nunca he visto una ',' en mayúsculas
prueba cambiando por
Código Delphi
[-]suma := suma + StrToFloat(StringReplace(Memo2.Lines[i],',','',[rfReplaceAll]));