- - PR -
ソースのコンバートで困ってます。
1
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-06-14 16:17
非常に、レベルの低い話かもしれませんが・・・
下記のコードをVBでのコードでしりたいのですがわかりません。 どなたか、教えてください。 **************************************************************** ボタンがクリックされたときに実行されるコード 1: private void button1_Click(object sender, System.EventArgs e) 2: { 3: ICD icd = new ICD(); 4: WORD[] words = icd.SearchWord(textBox1.Text, false); 5: ITEM item = icd.GetItemById(words[0].id); 6: textBox2.Text = item.meaning; 7: } ***************************************************************** 以上です。よろしくおねがいします。 | ||||||||||||||||||||||||
|
投稿日時: 2002-06-14 17:15
Insider.NET 特集 NetDictionary で始める Web サービス・プログラミング / 9.イベント・ハンドラを記述する で、各行ごとについて詳しく解説されていますよね?
VB.NET でどう書くかは、それで分るはずですが。 (VB.NET でコードを書ける人なら) それ以前の、Web 参照やネームスペースの指定の追加は、出来ているんですか? | ||||||||||||||||||||||||
|
投稿日時: 2002-06-14 17:29
Biacさんのおっしゃるとおり、わかるはずなのですが・・・
>4: WORD[] words = icd.SearchWord(textBox1.Text, false); このコードだけは、VB.NET でコードを書けません。 (おしえてください。) それ以外の、Web 参照やネームスペースの指定の追加はできています。 以上です。ご指摘ありがとうございます。 | ||||||||||||||||||||||||
|
投稿日時: 2002-06-14 18:20
そのまま VB.NET に貼り付けると、「'WORD' は型であるため、式として使用することはできません。」というエラーになりますよね。 これは、
とりあえず、そのまま
C# では配列を表すのに () ではなくて [] を使うのも、お分かりですね? (5行目) そこで、() に直してみます。
ただし、VB.NET では、配列の宣言は本来、
なお、これはサンプルコードですから、処理を分りやすくするため、エラー処理が省いてあります。 4行目の SearchWord() で、検索がヒットしなかった場合は、words に Nothing が入ってくるので、5行目で例外で落ちます。 それを加味すると、最終的に次のようになるでしょう。
| ||||||||||||||||||||||||
|
投稿日時: 2002-06-17 09:18
回答をありがとうございます。ただこの回答のコード記述は実際にbiacさんの解説して
いただいたとおりの理解をしてまして、テストした結果、下記のエラーが発生してしま います。 -------------------------------------------------------------------------- コード全文 -------------------------------------------------------------------------- 1: Dim icd As ICD = New ICD() 2: Dim words() As WORD = icd.SearchWord(TextBox1.Text, False) 3: If Not (words Is Nothing) Then 4: Dim item As ITEM = icd.GetItemById(words(0).id) 5: TextBox2.Text = item.meaning 6: Else 7: TextBox2.Text = "(該当無し)" 8: End If -------------------------------------------------------------------------- 2: Dim words() As WORD = icd.SearchWord(TextBox1.Text, False) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -------------------------------------------------------------------------- 'Dic_Icd.net.iwebmethod.www.WORD' は 'Dic_Icd.WORD' から派生していないため、型 'Dic_Icd.net.iwebmethod.www.WORD の 1 次元配列' の値を 'Dic_Icd.WORD の 1 次元配列' に変換できません。 -------------------------------------------------------------------------- 4: Dim item As ITEM = icd.GetItemById(words(0).id) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -------------------------------------------------------------------------- 型 'Dic_Icd.net.iwebmethod.www.ITEM' の値を 'Dic_Icd.ITEM' に変換できません。 -------------------------------------------------------------------------- そのため、これ以上、どう記述して良いかわからなかったので相談いたしました。 (最初にここまではやったということを明記するべきでした。すみません。) なので、解決策がありましたらお願いします。 以上 | ||||||||||||||||||||||||
|
投稿日時: 2002-06-17 13:55
あなたは、↓こう書いておられますが…
…じつは、そこが出来ていなかった、ということです。 ソースのコンバート方法の問題ではないことが、はっきりしましたね。 「ソースのコンバートで困ってます。」という件名は不適切ですので、あらためてスレッドを起こしてください。 | ||||||||||||||||||||||||
|
投稿日時: 2002-06-17 14:42
Web参照した後に、Web参照の結果できあがったプロキシクラスのファイル(Visual Studio .NETではReference.vb)から、WORDやITEMのClass宣言をコピーしてどこかに貼り付けたりしていませんか? このエラーは、本来Web参照の結果できているので自分で作る必要のないWORDクラスやITEMクラスを自分で作ってしまっている場合に発生します。プロジェクト内の全部のソースコードをもう一度見直して、Public Class WORDやPublic Class ITEMが2つ以上定義されていないかどうかチェックしてみてください。 | ||||||||||||||||||||||||
|
投稿日時: 2002-06-17 16:15
> Web参照した後に、Web参照の結果できあがったプロキシクラスのファイル
> (Visual Studio .NETではReference.vb)から、WORDやITEMのClass宣言を > コピーしてどこかに貼り付けたりしていませんか? ご指摘の通り、貼り付けていました(>_<)。 削除した結果、正常に処理が行えました(^o^)。 結果的には蛇足があったため、処理がうまくいかず、無駄な時間を費やして しまいました。 NothingBut.NETFX ・的確な指摘をありがとうございました。 ・どうして、私のミスしてるであろう部分をズバっとみぬいたのでしょうか・・・経験や 知識の賜物でしょうね。 biacさんへ ・何度も回答をいただきありがとうございました。 ・最初からもっと詳細な状況のスレッドを載せれていればお手数かけずにすんだのですが 今後は気をつけたいと思います。 以上、今後も私のスレッドに対してアドバイスをしていただけると幸いです。 |
1