Показать сообщение отдельно
  #8  
Старый 11.12.2013, 18:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потому что метод Get класса TRichEditStrings обрезает символы переноса строк #13#10. см. ComCtrls:

Код:
function TRichEditStrings.Get(Index: Integer): string;
var
  Text: array[0..4095] of Char;
  L: Integer;
begin
  Word((@Text)^) := SizeOf(Text);
  L := SendMessage(RichEdit.Handle, EM_GETLINE, Index, Longint(@Text));
  if (Text[L - 2] = #13) and (Text[L - 1] = #10) then Dec(L, 2);
  SetString(Result, Text, L);
end;

решение

вместо RichEdit1.Lines[i] использовать:

Код:
var
  Text: array [0..$fff] of Char;
  L: Integer;
  s: String;
...
    Word((@Text)^):=SizeOf(Text);
    L:=SendMessage(RichEdit1.Handle, EM_GETLINE, i, Integer(@Text));
    SetString(s, Text, L);

полный код примера

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  para: String;
  i: Integer;
  Text: array [0..$fff] of Char;
  L: Integer;
  s: String;
begin
  para:='';
  for i:=0 to SendMessage(RichEdit1.Handle, EM_GETLINECOUNT, 0, 0)-1 do
  begin
    Word((@Text)^):=SizeOf(Text);
    L:=SendMessage(RichEdit1.Handle, EM_GETLINE, i, Integer(@Text));
    SetString(s, Text, L);
    para:=para+s;
    if Pos(#13#10, s)>0 then
    begin
      Memo1.Lines.Add(para);
      para:='';
    end;
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием