
11.12.2013, 18:02
|
 |
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;
__________________
Пишу программы за еду.
__________________
|