Мне нужно использовать TRichEdit во время выполнения для выполнения преобразования rtf в текст, как обсуждено здесь .Мне удалось это сделать, но мне пришлось установить фиктивную форму в качестве родительской, если нет, я не могу заполнить TRichedit.Lines.(Ошибка: родитель отсутствует).Я вставляю свою функцию ниже, может кто-нибудь предложить способ избежать определения родителя?Можете ли вы также прокомментировать это и сказать мне, если вы найдете более производительную идею?
Примечание: мне нужна строка, а не TStrings в качестве вывода, поэтому она была разработана следующим образом.*
ОБНОВЛЕНИЕ : После ответа я обновил функцию и напишу ее здесь для справки:
function RtfToText(const RTF: string;ReplaceLineFeedWithSpace: Boolean): string;
var
RTFConverter: TRichEdit;
MyStringStream: TStringStream;
begin
RTFConverter := TRichEdit.CreateParented(HWND_MESSAGE);
try
MyStringStream := TStringStream.Create(RTF);
try
RTFConverter.Lines.LoadFromStream(MyStringStream);
RTFConverter.PlainText := True;
RTFConverter.Lines.StrictDelimiter := True;
if ReplaceLineFeedWithSpace then
RTFConverter.Lines.Delimiter := ' '
else
RTFConverter.Lines.Delimiter := #13;
Result := RTFConverter.Lines.DelimitedText;
finally
MyStringStream.Free;
end;
finally
RTFConverter.Free;
end;
end;