fpspreadsheet: Fix html-to-rich-text conversion if text ends with html tag

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6072 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2017-11-14 15:22:17 +00:00
parent a25ae0618d
commit f67d13f3b3

View File

@ -938,15 +938,26 @@ procedure HTMLToRichText(AWorkbook: TsWorkbook; AFont: TsFont;
var
analyzer: TsHTMLAnalyzer;
j: Integer;
len: Integer;
nrtp: Integer;
begin
analyzer := TsHTMLAnalyzer.Create(AWorkbook, AFont, AHTMLText + '<end>');
try
analyzer.PreserveSpaces := true;
analyzer.Exec;
APlainText := analyzer.PlainText;
SetLength(ARichTextParams, Length(analyzer.RichTextParams));
for j:=0 to High(ARichTextParams) do
ARichTextParams[j] := analyzer.RichTextParams[j];
nrtp := Length(analyzer.RichTextParams);
if nrtp > 0 then begin
// Avoid rich-text parameters beyond text end.
len := UTF8Length(APlainText);
if analyzer.RichTextParams[nrtp-1].FirstIndex > len then
dec(nrtp);
// Copy rich-text parameters to output
SetLength(ARichTextParams, nrtp);
for j:=0 to nrtp-1 do
ARichTextParams[j] := analyzer.RichTextParams[j];
end else
SetLength(ARichTextParams, 0);
finally
analyzer.Free;
end;