文字列をフォームファイル(DFM)形式に変換する[C++Builder]

「えーと●●●って選択肢のあるRadioGroupはどのフォームだったっけ」とか探したくなることがたまにある。
C++Builderでは(Delphiも)フォーム情報がテキスト形式(DFM)で保存されているので、ソースのあるフォルダでgrepかければ一発、のはずなのだが、英数・記号以外の文字は数値変換されているので、見つからないことがままある。

たとえば変な例だが「叱るButtonAtype」みたいなCaptionはdfmファイルに
Caption = #21489#12427'Button'#65313'type'
と保存される。(”A”も全角なので数値変換されている)

たぶん
・半角英数・記号はそのまま(シングルクオーテーション囲み)
・それ以外は文字コード番号の10進数表記(個々の先頭に”#”)
・さらにサロゲートペアは分割して変換(例の「叱(U+20B9F)」は「#21489#12427」)
というルールっぽい。

というわけで、変換関数を作った。
以下、コード。