Bueno, probé y funcionó.
Código Delphi
[-]
type TStringLista=class(TStringList)
protected
procedure SetTextStr(const Value: string); override;
end;
procedure TStringLista.SetTextStr(const Value: string);
var
P, Start: PChar;
S: string;
begin
BeginUpdate;
try
Clear;
P := Pointer(Value);
if P <> nil then
while P^ <> #0 do
begin
Start := P;
while not (P^ in [#10, #13]) do Inc(P);
SetString(S, Start, P - Start);
Add(S);
if P^ = #13 then Inc(P);
if P^ = #10 then Inc(P);
end;
finally
EndUpdate;
end;
end;
No es que lo haya probado una cosa bárbara, pero parece funcionar maravillosamente...