私はADORecordset
をhtmlに変換することを仕事としている関数を持っています:
class function RecordsetToHtml(const rs: _Recordset): WideString;
そして、関数の内臓には、多くの広い文字列の連結が含まれます。
while not rs.EOF do
begin
Result := Result+CRLF+
'<TR>';
for i := 0 to rs.Fields.Count-1 do
Result := Result+'<TD>'+VarAsWideString(rs.Fields[i].Value)+'</TD>';
Result := Result+'</TR>';
rs.MoveNext;
end;
数千の結果が得られたため、ユーザーが感じると思われる関数の実行には時間がかかりすぎます。Delphi Sampling Profilerは、時間の99.3%@WStrCatN
がワイドストリング連結(および)に費やされていることを示してい@WstrCat
ます。
誰もがワイドストリング連結を改善する方法を考えることができますか?Delphi5には文字列ビルダーはないと思います。また、Format
Unicodeをサポートしていません。
そして、だれもだまそうとしないことを確実にするために:あなたがインターフェースを実装しているふりをします:
IRecordsetToHtml = interface(IUnknown)
function RecordsetToHtml(const rs: _Recordset): WideString;
end;
アップデートワン
IXMLDOMDocument
HTMLをxmlとして構築するために、を使用することを考えました。しかし、それから私は、最終的なHTMLがそうxhtml
ではなくhtml
、微妙ではあるが重要な違いであることに気づきました。
アップデート2
Microsoftナレッジベースの記事:文字列連結のパフォーマンスを向上させる方法