お世話になっております。
VisualBasicにおける StrConv()を Delphiで実現しようと思い、
LCMapString()を使用した汎用関数を作成しました。
変換モードを引数に含めるため、ユーザ定義定数として
convWide // 全角に変換
convNarrow // 半角に変換
convUpperCase // 大文字に変換
convLowerCase // 小文字に変換
あたりを用意したいと思いました。
また、
・上記定数 (convX) を入力支援機能で表示されるようにする。
・StrConv()コール時のコード記述は、できるだけシンプルにする。
を目指したいと思っています。
列挙型を使用すると、
StrConv(strBuffer, convWide); // strBufferを全角に変換
のような記述ができるのですが、複数の変換モードをサポートしようとすると
現状では集合型しか思いつきません。
また集合型にすると、コール側は
StrConv(strBuffer, [convWide]); // 全角に
StrConv(strBuffer, [convWide, convUpperCase]); // さらに大文字にも!
のような記述となり、入力支援では convX が表示されなくなってしまいます。
(更に言うと、1つの変換モードでも [] の記述が必要になってしまう)
VisualBasicライクに
StrConv(strBuffer, convWide + convUpperCase);
とするような記述にできる手段はありませんでしょうか。
すみませんが、よろしくお願いいたします。
constで定義して、
const
convNone=0;
convWide=1; // 全角に変換
convNarrow=2; // 半角に変換
convUpperCase=4; // 大文字に変換
convLowerCase=8; // 小文字に変換
引数をIntegerにすれば、
StrConv(strBuffer, convWide or convUpperCase);
と呼べますよ。
どれが指定されたかは、and演算子で抽出します。
にしのさん、ありがとうございます。
うまく機能いたしました。調査が甘く、申し訳ございませんでした。
ありがとうございました。
ツイート | ![]() |