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 var
analyzer: TsHTMLAnalyzer; analyzer: TsHTMLAnalyzer;
j: Integer; j: Integer;
len: Integer;
nrtp: Integer;
begin begin
analyzer := TsHTMLAnalyzer.Create(AWorkbook, AFont, AHTMLText + '<end>'); analyzer := TsHTMLAnalyzer.Create(AWorkbook, AFont, AHTMLText + '<end>');
try try
analyzer.PreserveSpaces := true; analyzer.PreserveSpaces := true;
analyzer.Exec; analyzer.Exec;
APlainText := analyzer.PlainText; APlainText := analyzer.PlainText;
SetLength(ARichTextParams, Length(analyzer.RichTextParams)); nrtp := Length(analyzer.RichTextParams);
for j:=0 to High(ARichTextParams) do 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]; ARichTextParams[j] := analyzer.RichTextParams[j];
end else
SetLength(ARichTextParams, 0);
finally finally
analyzer.Free; analyzer.Free;
end; end;