You've already forked lazarus-ccr
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:
@ -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
|
||||||
ARichTextParams[j] := analyzer.RichTextParams[j];
|
// 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
|
finally
|
||||||
analyzer.Free;
|
analyzer.Free;
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user