Delphi XE RegularExpressions.pas を見た

互換のプログラムを作っているので見ないようにしてきた RegularExpressions.pas を今日見てしまいました。

見ると影響されてコードを頂いてしまうかもしれませんからね。

RegularExpressions.pas では高度なレコード型が多用されています。

私は TRegEx の定義部分だけを見て SkRegularExpression.pas を実装したんですが、悩んだのが正規表現オブジェクトの解放でした。

高度なレコード型にはデストラクタがないので、どうやって解放すればいいのかわかりませんでした。

結局は Interface を使って自動的に解放するようにしました。

でも、美しくないなあと思っていました。

version 1.1.x 正式版公開に向けて、SkRegularExprssions.pas もきれいにしようと思い立ち、とうとう本家を除いてしまいました。

そこで見つけたのが TScopeExitNotifier クラス。

こんな方法があったんですねえ。目からうろこです。

でも、参考にしようにもこんなにコンパクトなコードじゃあ、どうやってもパクリになってしまいますね。

どうしましょう。

コメントを残す

メールアドレスが公開されることはありません。