TStringHelperを拡張してTMyStringHelperを定義することは不可能というのは有名?な話ですが、では実際にどうやって自作のユーティリティ関数を定義しているんでしょうか?
文法的な解説やこういう発想、アイデアもあるということではなく、
皆さんの実際の開発でどうやってString, Integer等に対する汎用的な便利関数を蓄積しているのか教えてください。
自分はそのへんがふらついていて適当な場所にコードをコピペしたりという感じになってしまっていて
いい加減スパッと統一したいのですがなかなかこれと言った方法がなく困っています。
よろしくお願いします。
直接的な回答ではないのですが、逆に型を分けてしまう、というアプローチをとっています。
たとえば月(1-12)はもちろんIntegerでも表現可能ですが、これを部分範囲型として定義し、
これにrecord helperを用意します。
type
TMonth = 1..12;
TMonthHelper = record helper for TMonth
public
function GetName: String;
end;
こんな感じです。もちろん万能ではないです。
tomoさんこんにちは。
実際に使ってはいませんが、こんな感じならできます。
type
MyString = type string;
type
TMyStrigHelper = record helper for MyString
function Double: string;
end;
function TMyStrigHelper.Double: string;
begin
result := self + self;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
wStr : MyString;
s : string;
begin
wStr := 'A000';
ShowMessage(wStr.Double);
s := 'A111';
ShowMessage(MyString(s).Double);
end;
ツイート | ![]() |