検索条件による絞込み

[戻る]
ZES 2008/12/22(月) 14:18:24
お世話になっています。C++/CLI アプリケーションで
現在、CSVファイルから読み込んだファイルを表示する住所録を作成しています。

そこで、質問なのですが
カナによる絞込み検索を行いたいのですが、
現在考えているのは、コンボボックスで、ア行〜ワ行を任意で選択
→検索ボタンを押す
→選択された行を表示
と考えているのですが、ア行を選択した場合どのようにア〜オの
カナの人を表示させれば良いかわかりません。
よろしければ、どのようにすればよいのかご教授ください。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 14:40:24
> ア行を選択した場合どのようにア〜オの
> カナの人を表示させれば良いかわかりません。

基データとなるCSVには氏名の"ふりがな"が入っているのならば、
なにがわからないのか見当がつきません。
問題は何ですか?

ZES 2008/12/22(月) 14:44:39
ふりがなは入っています。
わからないのは、そのア〜オから始まる人のデータを取得する方法です

しま 2008/12/22(月) 15:01:25
>ふりがなは入っています。
>わからないのは、そのア〜オから始まる人のデータを取得する方法です

では
1.ふりがな中に"ア"が含んだものがあるかどうか調べる方法はお判りですか?
2.ふりがな中に"アイウエオ"のどれかがあることを調べる方法はお判りですか?

ZES 2008/12/22(月) 15:06:45
Cの文法でならばわかるのですが、、正直今の私では答えはNOになるかと思います。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 15:12:52
> わからないのは、そのア〜オから始まる人のデータを取得する方法です

先頭の1文字がア〜オのいずれかであればいい。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 15:13:42
> Cの文法でならばわかるのですが

ではそれを示してください。

ZES 2008/12/22(月) 15:17:51
if((strcmp(add[i].if((strcmp(add[i].kana,"ア") > 0)
            && (strcmp(add[i].kana,"カ") < 0))

以前にCで作成したときの判別方法です。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 15:19:11
それが正しく動くならそれつかえばいいじゃない。
なにが問題なんですか?

ZES 2008/12/22(月) 15:25:38
error C2664: 'strcmp' : 1 番目の引数を 'System::String ^' から 'const char *' 
に変換できません。(新しい機能 ; ヘルプを参照)使用可能なユーザー定義された変換演
算子がない、またはマネージ型をアンマネージ型に変換できません。

このようなエラーが出てしまいます。。。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 15:31:43
いや、そじゃなくてぇ。

Cでやってることが理解できているなら、
それと等価なC++/CLIコードに置き換えればいいでしょう?

using namespace System;

int main() {
    array<String^>^ names = 
      { L"アイダ", L"イトウ", L"カガワ", L"キタジマ", L"オガワ" };
    for each ( String^ name in names ) {
      if ( name[0] >= L'ア' && name[0] < L'カ' ) {
        Console::WriteLine(name);
      }
    }
}

ZES 2008/12/22(月) 15:41:14
>επιστημηさん

ありがとうございます。
説明していただいても、まだ少し???という状況なのですが、
ここまで説明して頂いたので、後は自分で勉強してなんとなると思います!
ありがとうございます!!

#まだまだ未熟者なので等価なC++/CLIコードに置き換えると言うことが
#επιστημηさんのようにはいきませんでした。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 15:44:44
> 後は自分で勉強してなんとなると思います!

てか、マニュアル読みました? 
http://msdn.microsoft.com/ja-jp/library/system.string.aspx
使えそうなメソッドが見つかりませんでしたか?

using namespace System;

int main() {
  array<String^>^ names = { L"アイダ", L"イトウ", L"カガワ", L"キタジマ", L"オ
ガワ" };
  array<Char>^ a = { L'ア', L'イ', L'ウ', L'エ', L'オ'};
  for each ( String^ name in names ) {
    if ( name->IndexOfAny(a) == 0 ) {
      Console::WriteLine(name);
    }
  }
}

ZES 2008/12/22(月) 17:12:00
>てか、マニュアル読みました? 

はい。。
一応読んではみたのですが、恥ずかしながら見つけることはできませんでした。

επιστημη [E-Mail] [HomePage] 2008/12/22(月) 17:45:23
> 見つけることはできませんでした。

読みが足りない。strcmp と(機能的に)まんま同じもんがあります。

using namespace System;

int main() {
  array<String^>^ names = 
    { L"アイダ", L"イトウ", L"カガワ", L"キタジマ", L"オガワ" };
  for each ( String^ name in names ) {
    if ( String::Compare(name,L"ア") > 0 && String::Compare(name,L"カ") < 0 ) {
      Console::WriteLine(name);
    }
  }
}

Blue 2008/12/22(月) 22:08:10
strcmp
http://msdn.microsoft.com/ja-jp/library/e0z9k731.aspx
のほうに
.NET Framework の相当するアイテム 
ってものありますね。
System::String::CompareOrdinalだけど。

古いスレッドには追加発言できません。