• ベストアンサー

XmlReaderのnothing判定方法

Dim rdr As XmlReader と宣言し 特定の条件が発生した時にrdrの値を入れるという処理を書いています。 ただ、 条件が発生しなかった場合はrdrのインスタンスは生成おらず、 これを判断するのにnothingだと比較出来ませんとエラーになります。 こういったケースの場合どのように判定してやるのでしょうか? 環境はVB2008です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

条件Aの場合にXmlReaderに値を入れる。 条件A以外の場合に何もしない。 ということですよね。 通常、XmlReader型はインスタンスの生成を行わなければNothing判定が可能なはずです。 もしかしたら、ループなどで処理を行っていませんか? ループの場合、1番目のデータが条件Aを満たしていて、2番目のデータが条件Aを満たさない場合、1番目の時にXmlReaderはインスタンス化されているので2番目のデータはNothing判定できません。 試しに条件AのElseにXmlReader = Nothingを記述してみて下さい。

noname#93133
質問者

お礼

・ @^キшエォk・ッオ、 ・{gモ-駿・擱fラ・c・ Vヲ・ョI襭歴ーM ト・ Å・ 3萵# 訶!フヤニ幡ヨケ・+崚2ス担CkQ ネ囮覚レ 鵡qI'。 >fイ胙サ ヘモ瓦(6)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SetとNothingの存在意味?

    数値とオブジェクトの変数セットはそれぞれ、 Dim num as integer num = 5 Dim obj as Object set obj = new From set obj = Nothing ですが、 オブジェクトの場合でインスタンスを生成しない、単なる参照?別名? の場合はNothingは不要でしょうか? Dim obj as Object For x = 1 to 10 set obj = Form2 ' newとインスタンスを生成するのではなく、単なる参照  obj.Caption = str(x) & "回目" 'set obj = nothingは不要? Next x

  • Null判定がきかない

    VB2008で,ある特定のウェブページのレイアウトを変更させて表示させる プログラムを作りました。自分のPCでは快調に動くので,別のPCで動かして みたところ,NullReferenceExceptionが発生して止まってしまいます。 しらべてみたところ,ビルドしたPCでは, Dim elemchild as HtmlElement elemchild=xxxx.firstchild Do ~処理~ elemchild=elemchild.NextSibling Loop Until isNothing(elemchild) で,elemchildがNothingになるとちゃんとループを抜けているのですが, もう1台のPCでは,elemchildがNothingになってもループを抜けず, ~処理~のところで,NullReferenceExceptionが発生しているみたいです。 Null判定のところを,whileにしてみたり,elemchild is Nothingと書いて みたり,いろいろ書き換えてみましたが,まったくNothingを拾ってくれず ループを繰り返します。 ~処理~の所全体を,try~catchで囲って,catchでループから抜けさせると NullReferenceExceptionは起きなくなります。 なぜ,ビルドしたPCではうまくNothingの判定ができ,別なPCでは Nothingの判定ができないのでしょうか?まったく分かりません。どなたか お教えください。

  • オブジェクトの廃棄

    VB6やC++の時はオブジェクトを使い終わったら破棄するのが当然でした。 Objsys=Nothingみたいな代入をよくやっていました。 VB.Netからはあまり意識されなくなっているのでしょうか。 インスタンスを生成してもそのままのことが多いような気がします? 例えば以下のgraphicsのインスタンスなどです。どうなっているのでしょう。 Dim g As Graphics = PictureBox1.CreateGraphics

  • 変数の値を破棄する方法

    データ型で宣言した場合、 変数の値はどうやって破棄すればいいのでしょうか? 例えば、標準モジュールに Option Explicit Dim s As String Dim w As Worksheet Sub test() Set w = ActiveSheet s = "sss" MsgBox w.Name MsgBox s Set w = Nothing s = Nothing End Sub とした場合、 s = Nothingがエラーになります。 オブジェクト型で宣言したら、 Set ●= Nothing で破棄しますが、 データ型で宣言した場合の正しい破棄の仕方を教えてください。 今回の例は、モジュールレベルのdimステートメント で宣言しているため、プロシージャーが終わっても 値を保持しています。

  • VB.NETでのシリアル通信

    .NET初心者です。 VB.NETでシリアル通信をしようとしています。 参照設定のところに Microsoft MSCOMM CONTROLというのがあったので 選択しました。 すると、MSLib.MSCommというのがでてきたので Vb6の Dim test As mscomm のように宣言して使えるかと思い Dim test As MSLib.MSComm test.PortOpen と書いてみたところ、 オブジェクト参照・・・インスタンス化されていません。と、エラーがでました。 ブレイクしてみたところ、test = Nothingでした。 testが無いのでインスタンス化されていないという エラーがでるのだなということは分かったのですが なぜこのエラーがでるのか、 どうしたらこのエラーを回避し、 .NETでシリアル通信ができるのか教えてください。 よろしくお願いします。

  • VB2008で全角半角の判定

    VB2008で全角半角の判定 VB6 では下記のようにして判定していましたが、VB2008では どのようにすればよいのかお教えください。  dim moji as string dim zhN as integer  zhN = LenB(StrConv(moji, vbFromUnicode)) mojiには1文字格納されており、  半角なら zhN = 1 全角なら zhN = 2 となる。  これをVB2008で実現する方法がわかりません。  よろしくお願いします。

  • エラー438でオブジェクトのプロパティ存在判定方法

    基本的なところですみません。 Excel2007 VBAで「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」となります。 Dim xml As Object Dim objPrice As Object Dim tempWprd As Varient Set xml = CreateObject("Microsoft.XMLDOM") 省略(XMLデータを受信しxmlに代入) Set objPrice = xml.SelectNodes("AAA/BBB/CCC") If Not objPrice Is Nothing Then tempWord = objPrice.text ’★ここでエラー End If というようなコードです。 うまく取れることもあるのですが、objPrice は存在するがtextのメンバがいないということだと思いますが、存在を判定する方法をご教授させてください。そもそも<ccc>文字</ccc>の中の文字(実際は数値)を取得したい場合は、textはダメなのでしょうか? cccはNothingではないので存在しているように見えるのですが、textが使える場合と使えない場合があるのは理由があり、値がある場合に取得したいと考えています。 存在確認に関しては if (objPrice.text <> Null) then Empty,Nothingなどいろいろ試しましたが、そもそもtextがないようなのでうまくいきません。 すみませんが、よろしくお願いします。

  • C#で配列が空かを判定するには?

    C#で配列が空かどうかを判定するにはどうしたらようでしょうか? VB.NETではIsNothingで出来るのですが、C#の方法が分かりません。 -- C# --- int[] a={0,1,2}; int[] b; //bが空なのを判定したい --VB.NET--- Dim a() As Int16 = {0, 1, 2} Dim b() As Int16 MsgBox(IsNothing(a)) 'Falseを返す MsgBox(IsNothing(b)) 'Trueを返す ---- VS.NET2003/Windows2000Pro

  • Excelブックの保護パスワード判定方法

    VB6.0で、Excelブックが保護パスワードされているかどうかの 判定を行いたいです。 以下のようにHasPasswordプロパティを使用してみたのですが、 保護パスワード付きのExcelブックでテストしてみると Workbooks.Openの部分で処理が止まってしまい、先にすすみません。 基本的にやり方が間違えているんでしょうか? お分かりになる方がいらっしゃいましたら、教えてください。 よろしくお願いします。   Dim xlApp  As Excel.Application   Dim xlBook  As Excel.Workbook   Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.Workbooks.Open("C\:TEST.xls") If xlBook.HasPassword Then Msgbox("保護パスワードあり") Else Msgbox("保護パスワードなし") End If   Set xlSheet = Nothing   xlBook.Close   Set xlBook = Nothing   xlApp.Quit   Set xlApp = Nothing

  • Boolean型配列中のTrueの有無を判定したい(VB2005)

    VB.NET2005についての質問です。 Dim hoge(5) as Boolean  '値が格納済みとする Dim flg as Boolean 配列hogeの要素の中に、一つでもTrueがあったら、flgにTrueを格納する処理を考えています。 現在はhogeをループで回してTrueの有無を判定していますが、ループを使わず、もっと簡単に上記の処理を行うことは可能でしょうか。 例えば   flg = 処理(hoge) などといった形で処理ができれば理想的です。 どうぞよろしくお願い致します。