>>435 こんな感じでいいのではないかと。
if not assigned(thread.dat) then
begin
thread.AddRef;
if assigned(thread.dat) then begin
tmpDat := thread.DupData;
Result := Dat2HTML.ToDatOut(dest, tmpDat, startLine, endLine - startLine + 1, thread.ABoneArray);
tmpDat.Free;
end;
thread.Release;
end else begin
//空じゃないときも複製しないと表示がおかしくなることは確認済み
tmpDat := thread.DupData;
Result := Dat2HTML.ToDatOut(dest, tmpDat, startLine, endLine - startLine + 1, thread.ABoneArray);
tmpDat.Free;
end;