ユーザ定義の定数を引数にするには

解決


だい  2003-09-19 21:06:28  No: 4936

お世話になっております。

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);
とするような記述にできる手段はありませんでしょうか。

すみませんが、よろしくお願いいたします。


にしの  2003-09-19 21:42:23  No: 4937

constで定義して、

const
  convNone=0;
  convWide=1;      // 全角に変換
  convNarrow=2;    // 半角に変換
  convUpperCase=4; // 大文字に変換
  convLowerCase=8; // 小文字に変換

引数をIntegerにすれば、
 StrConv(strBuffer, convWide or convUpperCase);
と呼べますよ。
どれが指定されたかは、and演算子で抽出します。


だい  2003-09-19 22:12:05  No: 4938

にしのさん、ありがとうございます。

うまく機能いたしました。調査が甘く、申し訳ございませんでした。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加