C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>
■5791  Re[1]: プリンタのポート番号を取得したい
□投稿者/ 魔界の仮面弁士 -(2007/07/23(Mon) 21:11:41)
    2007/07/23(Mon) 21:12:09 編集(投稿者)

    No5788 (nana* さん) に返信
    > ある特定のプリンタのポート番号をIPアドレス\ポート番号形式で取得したいと考えています。
    (中略)
    > WMIを使用すれば取得可能らしいのですが、WMIに関する技術力不足のため

    WMI でよければ、これでどうでしょう。


    Option Explicit
    Private Sub Form_Load()
    Dim prn As Object
    For Each prn In GetObject("winmgmts:").InstancesOf("Win32_Printer")
    Debug.Print "名前="; prn.Name
    Debug.Print "モデル="; prn.DriverName
    Debug.Print "ポート="; prn.PortName
    Debug.Print "---------------"
    Next
    End Sub


    http://msdn2.microsoft.com/en-us/library/Aa394363.aspx
記事No.5788 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5804  Re[2]: プリンタのポート番号を取得したい
□投稿者/ nana* -(2007/07/24(Tue) 09:18:46)
    No5791 (魔界の仮面弁士 さん) に返信
    > 2007/07/23(Mon) 21:12:09 編集(投稿者)
    >
    > ■No5788 (nana* さん) に返信
    >>ある特定のプリンタのポート番号をIPアドレス\ポート番号形式で取得したいと考えています。
    > (中略)
    >>WMIを使用すれば取得可能らしいのですが、WMIに関する技術力不足のため
    >
    > WMI でよければ、これでどうでしょう。
    >
    >
    > Option Explicit
    > Private Sub Form_Load()
    > Dim prn As Object
    > For Each prn In GetObject("winmgmts:").InstancesOf("Win32_Printer")
    > Debug.Print "名前="; prn.Name
    > Debug.Print "モデル="; prn.DriverName
    > Debug.Print "ポート="; prn.PortName
    > Debug.Print "---------------"
    > Next
    > End Sub
    >
    >
    > http://msdn2.microsoft.com/en-us/library/Aa394363.aspx


    魔界の仮面弁士 さんお返事ありがとうございます。

    書き方が悪く 申し訳ありません。
    自分がWMIについての理解が浅く、社内でも詳しいエンジニアが居ないようなので
    後々の運用と開発の生産性を考えて WMIを使用せずに情報を取得したいと考えているのです。

    やはり、難しいのでしょうか??
記事No.5788 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5578  Re[7]: DataGridの行の削除の仕方
□投稿者/ もみじ -(2007/07/18(Wed) 17:54:51)
    上記のULR一部抜粋

    この辺がご参考になるかと思います。

    //-----------------------------------------------------------
    Dim dstMain As New DataSet()

    '選択行(列)削除
    Private Sub btnRowDelete_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnRowDelete.Click

    Me.lblMsg.Text = ""
    '選択されているか
    If Me.dgdMain.CurrentRowIndex.Equals(-1) Then
    Me.lblMsg.Text = "選択されていないので削除できません。"
    Exit Sub
    End If

    '選択されている行の値でデータセット内のテーブル行削除
    dstMain.Tables(0).Rows(Me.dgdMain.CurrentRowIndex).Delete()
    'データグリッドに再表示
    Me.dgdMain.SetDataBinding(dstMain, dstMain.Tables(0).TableName)

    End Sub
    //-----------------------------------------------------------


    CurrentRowIndex は現在選択(指定)している行です。(言い換えれば、削除対象行)

    間違っていたらすいません。
記事No.5521 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5837  Re[2]: XML編集ソフト作成方法
□投稿者/ aaa -(2007/07/24(Tue) 16:08:04)
    No5836 (HIRO さん) に返信
    
    ご返答ありがとうございます!
    
    > ReadXMLでDataSetにデータを読み込めているんですよね?
    > DataSetにDataTableが出来ていると思うのですが、そのDataTableの値を変更してWriteXMLするのが簡単かと思います。(但し、細かい処理をするには不向きかもしれません)
    > 
    > 特定のタグを探す場合はDataTableのSelectメソッドが使用できるかと思います。
    
    DataTableは自動的に作成されているのでしょうか?
    うまく値を取り出せません・・・。
    以下にソースコードを記述します。
    
    //ソースコード--------
    DataSet dtSet = new DataSet();
    StreamReader reader = new StreamReader("test.xml",System.Text.Encoding.GetEncoding("Shift_Jis"));
    
    dtSet.ReadXml(reader);
    
    //---------------------
    
    間違いがあればご指摘下さい。
    なお、XmlDocumentを使用することも考えたのですが
    DataSetの方が特定のタグを検索するのが容易なようだったので
    DataSetを使用しています。
    認識は正しいでしょうか?
    
    以上、よろしくお願い致します。
    
記事No.5834 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5840  Re[3]: XML編集ソフト作成方法
□投稿者/ HIRO -(2007/07/24(Tue) 16:24:17)
>
    No5837 (aaa さん) に返信
    > ■No5836 (HIRO さん) に返信
    >
    > ご返答ありがとうございます!
    >
    >>ReadXMLでDataSetにデータを読み込めているんですよね?
    >>DataSetにDataTableが出来ていると思うのですが、そのDataTableの値を変更してWriteXMLするのが簡単かと思います。(但し、細かい処理をするには不向きかもしれません)
    >>
    >>特定のタグを探す場合はDataTableのSelectメソッドが使用できるかと思います。
    >
    > DataTableは自動的に作成されているのでしょうか?
    > うまく値を取り出せません・・・。
    > 以下にソースコードを記述します。
    >
    > //ソースコード--------
    > DataSet dtSet = new DataSet();
    > StreamReader reader = new StreamReader("test.xml",System.Text.Encoding.GetEncoding("Shift_Jis"));
    >
    > dtSet.ReadXml(reader);
    >
    > //---------------------
    >
    > 間違いがあればご指摘下さい。
    > なお、XmlDocumentを使用することも考えたのですが
    > DataSetの方が特定のタグを検索するのが容易なようだったので
    > DataSetを使用しています。
    > 認識は正しいでしょうか?
    >
    > 以上、よろしくお願い致します。
    >

    認識は間違っていないと思います。
    ただ、最初に述べたように細かい事をしたいのであれば、DataSetは不向きかもしれません。
    XmlDocumentを使用する方が良いでしょう。(ちょっと敷居が高いですが)

    DataSetに正しくファイル内容が読み込まれた場合には、

    If dtSet.Tables.Count > 0 Then

    End If

    が成り立つかと思います。
    正常に読み込めた場合には、DataSetに複数のテーブルが作成されるからです。

    で、データを取り出すには、dtSet.Tables(0).Rows()() のように取り出すのですが(他にも方法があります)、この辺はヘルプを見た方がよいと思います。
    http://msdn2.microsoft.com/ja-jp/library/system.data.datatable(VS.80).aspx

記事No.5834 のレス /過去ログ16より / 関連記事表示
削除チェック/

■6137  DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる -(2007/08/02(Thu) 10:09:22)

    分類:[C#] 

    いつもお世話になっています。
    Visual Studio 2005 C#でXMLファイルのエディタを作成しています。
    そこで、DataSetにてXMLファイルを読み込み、データを追加する際に
    構造ごと(DataTableごと)指定した位置に追加したいのですが
    うまくいきません。

    // ソースコード↓↓↓
    DataSet aDtSet = new DataSet();
    StreamReader aReaderv= new StreamReader("sample.xml",System.Text.Encoding.GetEncoding("Shift_Jis"));

    //XMLファイル読み込み
    aDtSet.ReadXml(Reader);

    //テーブルの追加???

    //sample.xmlの構造
    //<ProjectFile>
    // <ProjectInfo>
    // <Type>1</Type>
    // <Version>1.0</Version>
    // </ProjectInfo>
    // <ModelData>
    // <Element>
    // <Name>aaa</Name>
    //  <Value> --------------------- ※このValueを構造も含めコピーし
    //  <Data>1<Data> |  Name以下に複数追加したい
    //  </Value> --------------------
    // </Name>
    // </Element>
    // </ModelData>
    //</ProjectFile>

    DataTableの扱い方が分からずうまくできません。
    ご教授よろしくお願い致します。
親記事 /過去ログ16より / 関連記事表示
削除チェック/

■6139  Re[1]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ HIRO -(2007/08/02(Thu) 11:27:28)
>
    No6137 (はる さん) に返信
    > //sample.xmlの構造
    > //<ProjectFile>
    > // <ProjectInfo>
    > // <Type>1</Type>
    > // <Version>1.0</Version>
    > // </ProjectInfo>
    > // <ModelData>
    > // <Element>
    > // <Name>aaa</Name>
    > //  <Value> --------------------- ※このValueを構造も含めコピーし
    > //  <Data>1<Data> |  Name以下に複数追加したい
    > //  </Value> --------------------
    > // </Name>
    > // </Element>
    > // </ModelData>
    > //</ProjectFile>
    >

    DataTabelの扱い方の前に Sample.xmlの構造おかしくないでしょうか?
    > // <Name>aaa</Name>
    > //  <Value> --------------------- ※このValueを構造も含めコピーし
    > //  <Data>1<Data> |  Name以下に複数追加したい
    > //  </Value> --------------------
    > // </Name>

    <Name>タグに対する"</Name>"が2個ありますよ。
記事No.6137 のレス /過去ログ16より / 関連記事表示
削除チェック/

■6140  Re[2]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる -(2007/08/02(Thu) 11:32:24)
    ご返答ありがとうございます。
    すみません、写し間違えました。
    正しくは以下の通りです。

    >>//sample.xmlの構造
    >>//<ProjectFile>
    >>// <ProjectInfo>
    >>// <Type>1</Type>
    >>// <Version>1.0</Version>
    >>// </ProjectInfo>
    >>// <ModelData>
    >>// <Element>
    >>// <Name>aaa</Name>
    >>// <Value> --------------------- ※このValueを構造も含めコピーし
    >>// <Data>1<Data> |  Name以下に複数追加したい
    >>// </Value> --------------------
    >>// </Element>
    >>// </ModelData>
    >>//</ProjectFile>

    Value以下のDataも含めコピーし追加したいのですが
    どのようにすればよいのでしょうか?
    よろしくお願い致します。
記事No.6137 のレス /過去ログ16より / 関連記事表示
削除チェック/

■6153  Re[8]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる -(2007/08/02(Thu) 15:05:38)
    No6152 (HIRO さん) に返信
    > ■No6150 (はる さん) に返信
    >>ありがとうございます。
    >>XmlDocumentも試してみました。
    >>XmlDocumentで要素を一つずつ追加することはできましたが
    >>ツリー構造を子も含めてコピーして追加することってできますか?
    >
    > 取得したノードをXmlNodeクラスのAppendChildメソッドで追加できるのではないでしょうか?
    > (すみませんが検証しておりません)


    以下のコードを書いていますがうまくいきません。
    ノードのコピーが足りないように思いますがよく分かりません。

    //---ソースコード---------------------------------
    XmlDocument doc = new XmlDocumen();
    XmlTextWriter tw = new XmlTextWriter("result.xml",null);
    XmlNode domNode;
    XmlNode addNode;

    //XMLファイルの読み込み
    doc.Load("sample.xml");

    //コピーするノードを設定
    addNode=doc.SelectSingleNoe("/ProjectFile/ModelData/Element/Value");

    //指定位置に追加実行
    domNode=doc.SelectSingleNode("/ProjectFiles/ModelData/Element");
    domNode.AppendChild(addNode);

    //XMLファイルに書き込み
    doc.Save(tw);

    //sample.xmlの構造
    //<ProjectFile>
    // <ProjectInfo>
    // <Type>1</Type>
    // <Version>1.0</Version>
    // </ProjectInfo>
    // <ModelData>
    // <Element>
    // <Name>aaa</Name>
    // <Value> --------------------- ※このValueを構造も含めコピーし
    // <Data>1<Data> |  Name以下に複数追加したい
    // </Value> --------------------
    // </Element>
    // </ModelData>
    //</ProjectFile>


    間違いご指摘いただけるとうれしいです。
    よろしくお願い致します。
記事No.6137 のレス /過去ログ16より / 関連記事表示
削除チェック/

■6145  構造体内での配列の宣言
□投稿者/ kou -(2007/08/02(Thu) 13:47:01)

    分類:[C++/CLI] 

    こんちには、分からないことがあるので質問させていただきます。

    以前まで、Managed C++ でプログラムを作成していたのですが、
    それを、C++/CLI に変換しているとこで問題が発生してしまいました.

    MC++
    --------------
    struct s{
    int a[10];
    int b[10];
    }

    s p[10];

    p[1].a[2]=1;
    p[2].a[2]=2;
    --------------

    C++/CLI
    --------------
    value struct s{
    static array<int>^ a = gcnew a<int>(10);
    static array<int>^ b = gcnew b<int>(10);

    }

    static array<s>^ p = gcnew array<s>(10);

    p[1].a[2]=1;
    p[2].a[2]=2;
    --------------

    として中身を確認した時に、
    MC++ では、p[1].a[2]=1 となっていたのですが
    C++/CLI では、p[1].a[2]=2 となってしまっていました。

    こうなってしまう、原因、解決法を教えて頂けたらと思います。
    よろしくお願いします。
親記事 /過去ログ16より / 関連記事表示
削除チェック/

■6173  Re[4]: 金額の扱いについて
□投稿者/ むねお -(2007/08/03(Fri) 10:51:40)
    > プログラマが根本的に理解していないようでは、やはりバグが生まれると思うからです。
    至極もっともなご意見で恐れ入ります。私自身.NETでの開発経験がないのでメンバーにレクチャー
    できるかどうか自信がないのでなんとか手法で逃げようとしていたのかも知れません。
    
    > SQLServerから出し入れするときに小数部2桁で扱うということですよね?
    > プログラム内部では小数部3桁以上を持つことになると思います。(でないと丸め方を選べない)
    
    最初は下記のようにSQL Serverの結果と一致するように固定小数点型をエミュレート?するような
    ものを考えていたのですが、何か方向性が違うような気がしていた次第です。
    
    
    -----------------------------------------------------------------------------------
    Option Strict On
    
    Imports System.Data.SqlTypes
    
    Public Class Class1
    
        Shared Sub main()
    
            Dim d As Decimal = 1D
            Dim d2 As Decimal = d / 3D
            Dim d3 As Decimal = d2 * 3D
            Dim d4 As Decimal = (1D / 3D) * 3D
    
            MessageBox.Show(d3.ToString & ":" & d4.ToString)
    
            Dim c As New Currency(19, 4)
            Dim c2 As New Currency(19, 4)
            Dim c3 As New Currency(19, 4)
            Dim c4 As New Currency(19, 4)
    
            c.Value = 1D
            c2.Value = c.Value / 3D
            c3.Value = c2.Value * 3D
            c4.Value = (1D / 3D) * 3D
    
            MessageBox.Show(c3.Value.ToString & ":" & c4.Value.ToString)
    
        End Sub
    
    End Class
    
    Public Structure Currency
    
        Private _Value As SqlDecimal
        Private _Presition As Integer
        Private _Scale As Integer
    
        Public Sub New(ByVal p As Integer, ByVal s As Integer)
            _Presition = p
            _Scale = s
        End Sub
    
        Public Property Value() As SqlDecimal
            Get
                Return _Value
            End Get
            Set(ByVal sd As SqlDecimal)
                _Value = SqlDecimal.ConvertToPrecScale(sd, _Presition, _Scale)
            End Set
        End Property
    
    End Structure
    
    -----------------------------------------------------------------------------------
    
    【SQL Server】
    
    declare @d decimal(19,4) 
    declare @d2 decimal(19,4) 
    declare @d3 decimal(19,4) 
    declare @d4 decimal(19,4)
    
    set @d = 1.
    set @d2 = @d / 3.
    set @d3 = @d2 * 3.
    set @d4 = (1. / 3.) * 3.
    
    select str(@d3,19,4) + ':' + str(@d4,19,4)
    
    結果:0.9999:1.0000
    
    
記事No.6149 のレス /過去ログ16より / 関連記事表示
削除チェック/

■6256  GridViewの列幅の設定とTextBox化
□投稿者/ ワイフラ -(2007/08/07(Tue) 09:27:02)

    分類:[ASP.NET (VB)] 

    ASP.NETで言語はVBを使って開発をしているんですが
    ある画面でPage_Load時に作ったWebサービスでSQL Sarverよりデータを
    取ってきて下記のような感じでデータをGridViewにバインドしているんですが、
    バインドしたGridViewの列幅を変更したいんですがColumnsのカウント等を見ても
    何も入っていませんし自分が考えられる限りやっては見たんですが
    一向にできませんでした。

    ---------------------------------------------------------
    Dim DataSet1 As New localhost.Service

    GridView1.DataSource = DataSet1.GetOrderData()
    GridView1.DataMember = "Order_Data"
    GridView1.DataBind()
    ---------------------------------------------------------

    その他にも、例えばバインドしたデータが7列あるとして、
    その3列目をTextboxにして変更したりしたいんですが
    やはりどうやっていいのかわかりません。

    上記のやりかたを教えて頂けたらありがたいです。
    よろしくお願いします。
親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6534  Re[2]: プロシージャの問題ですが
□投稿者/ komaru -(2007/08/17(Fri) 14:49:18)
    No6527 (渋木宏明(ひどり) さん) に返信
     遅くなってごめん。
     具体的には以下のように

    LOOP
           --------------------------------------------------------------------
    -- 1レコード分のカラムデータを【COL_SEQ】変数に格納
    --------------------------------------------------------------------
    i := 0;
    OPEN GET_DATA_INOUT_DB(PRM_DATA);
    LOOP
    FETCH GET_DATA_INOUT_DB INTO REC_GET_DATA_INOUT_DB;
    EXIT WHEN GET_DATA_INOUT_DB%NOTFOUND;
    DBMS_SQL.COLUMN_VALUE(curSearch,i+1,COL_SEQ(i+1));
    COL_SEQ(i+1) := rtrim(ltrim(COL_SEQ(i+1))); i := i + 1;
    END LOOP;
    CLOSE GET_DATA_INOUT_DB;
    DBMS_SQL.COLUMN_VALUE(curSearch,i+1,COL_SEQ(i+1));
    COL_SEQ(i+1) := rtrim(ltrim(COL_SEQ(i+1))); --受信時連番
    /************************************************************/
    -- データチェック開始&ブレイクキー生成
    /************************************************************/

    DBMS_OUTPUT.PUT_LINE('--------------------------------------' );
    DBMS_OUTPUT.PUT_LINE('DENPYOKB-->' || COL_SEQ( SFS_IN_Return_Col_No(PRM_DATA,'DENPYO_KB') ) );
    DBMS_OUTPUT.PUT_LINE('YOTEIYMD-->' || COL_SEQ( SFS_IN_Return_Col_No(PRM_DATA,'SYC_YOTEI_YMD') ) );
    DBMS_OUTPUT.PUT_LINE('DENPYONO-->' || COL_SEQ( SFS_IN_Return_Col_No(PRM_DATA,'DENPYO_NO') ) );
    ------------------ここ以上は正しく動く-------------------------------

    OPEN GET_DATA_INOUT_DB(PRM_DATA);
    LOOP
    ------------------ここからはだめ-------------------------------

    FETCH GET_DATA_INOUT_DB INTO REC_GET_DATA_INOUT_DB;
    EXIT WHEN GET_DATA_INOUT_DB%NOTFOUND;

    -- COL_DATA(値) = REC_GET_DATA_INOUT_DB.FIELD_NMの情報です--
    ------------------------------------------------------------
    COL_DATA := COL_SEQ(i+1); --★★ 1カラム情報 ★★ --
    ------------------------------------------------------------

    --入出力DB情報のフィールドに該当する、入出力マスタ明細設定が存在するか?
    BEGIN
    SELECT * INTO REC_MK_INOUT_B
    from MK_INOUT_B
    where KOKYAKU_CD = KEY_KOKYAKU_CD
    and BUMON_CD = KEY_BUMON_CD
    and KYOTEN_CD = KEY_KYOTEN_CD
    and DATA_CD = PRM_DATA --データ種別コード
    and FIELD_NM = REC_GET_DATA_INOUT_DB.FIELD_NM; --カラム名

    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    デバッグ結果は以下のように

    スタート
    --------------------------------------
    DENPYOKB-->20               /* ここは正常ではない 
    YOTEIYMD-->20050609           /* ここは正常ではない   
    DENPYONO--> /* ここは正常ではない 
    --------------------------------------
    DENPYOKB-->23 /* ここは正常
    YOTEIYMD-->20070706 /* ここは正常
    DENPYONO-->10550213803696 /* ここは正常
    --------------------------------------ーーーーーーーーー以下は正常ーーーーーー
    DENPYOKB-->23
    YOTEIYMD-->20070706
    DENPYONO-->10550213803689
    --------------------------------------
    DENPYOKB-->23
    YOTEIYMD-->20070430
    DENPYONO-->10550210785094
    --------------------------------------
    DENPYOKB-->23
    YOTEIYMD-->20070430
    DENPYONO-->10550210785094
    終了

    よろしくお願いいたします。

記事No.6525 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6493  妥当性チェックについて
□投稿者/ サンダル -(2007/08/16(Thu) 09:57:35)

    分類:[C#] 

    こんにちは。よろしくお願いします。

    XMLをスキーマで妥当性チェックをしていて、スキーマの解析中に意図しないエラーがでてしまって困っております。
    (Borland C# Builder)

    ---------------------- スキーマ ----------------------
    <?xml version="1.0" encoding="UTF-8"?>
    ・・・省略・・・
    <xsd:simpleType name="test">
    <xsd:restriction base="xsd:string">
    <xsd:pattern value="(\p{IsBasicLatin}|\p{IsLatin-1Supplement})*"/>
    </xsd:restriction>
    </xsd:simpleType>
    ・・・省略・・・
    ------------------------------------------------------

    とスキーマに記述しており、次のような解析エラーが出力されます。

    --------------------- 解析エラー ---------------------
    面を制限しているパタンが無効です - 解析中 "^(((\p{IsBasicLatin}|\p{IsLatin-1Supplement})*))$" - 不完全な \p{X} 文字エスケープです。
    ------------------------------------------------------

    どうやら "IsLatin-1Supplement" がよろしくないようです。

    回避する術をご教授ください。よろしくお願いします。

    -------------------- 以下 C# ソース -------------------
    try
    {
    String schemaPath1 = "スキーマファイル";
    String documentPath = "XMLファイル";

    XmlValidatingReader reader = new XmlValidatingReader( new XmlTextReader(documentPath) );

    reader.Schemas.Add(null, schemaPath1);

    reader.ValidationType = ValidationType.Schema;
    reader.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

    XmlDocument doc= new XmlDocument();

    doc.Load(reader);

    for(int i=0; i<_cnt; i++)
    {
    ・・・エラー処理・・・
    }
    }
    catch( Exception ee )
    {
    ・・・エラー処理・・・
    }

親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6609  Borland C# Builder で検証をかけるとエラー
□投稿者/ サンダル -(2007/08/20(Mon) 15:11:59)

    分類:[XML] 

    ネットよりXMLとスキーマのサンプルをいただき、それに付随していた JavaScript で検証をかけるとエラーにならないのですが
    Borland C# Builder で検証をかけるとエラーになってしまいます。

    XMLのどの部分がよろしくないのかご教授ください。
    (それともXMLパーサー?)

    books.xml (XMLファイル)---------------------------------------------------

    <?xml version="1.0" encoding="Shift_JIS" ?>
    <ym:books xmlns:ym="urn:books">
    <owner address="ABCDEFG@AAA.com">NAME</owner>
    <book isbn="XXXX1-1111-1111-1">
    <name>テスト</name>
    </book>
    </ym:books>

    books.xsd (スキーマファイル1)---------------------------------------------------

    <?xml version="1.0" encoding="Shift_JIS" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:include schemaLocation="bookSub.xsd" />

    <xsd:element name="books">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="owner" type="ownerType"
    minOccurs="1" maxOccurs="1" />
    <xsd:element name="book" type="bookType"
    minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>

    <xsd:attributeGroup name="bookAttr">
    <xsd:attribute name="isbn" use="required">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:pattern value="XXXX[0-9]{1}-[0-9]{4,5}-[0-9]{3,4}-[0-9]{1}" />
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:complexType name="bookType">
    <xsd:sequence>
    <xsd:choice>
    <xsd:element name="name" type="xsd:string" />
    <xsd:element name="title" type="xsd:string" />
    </xsd:choice>
    </xsd:sequence>
    <xsd:attributeGroup ref="bookAttr" />
    </xsd:complexType>
    </xsd:schema>

    bookSub.xsd (スキーマファイル2)---------------------------------------------------

    <?xml version="1.0" encoding="Shift_JIS" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="ownerType" mixed="true">
    <xsd:attribute name="address" type="xsd:string" use="required" />
    </xsd:complexType>
    </xsd:schema>

    C# ソース(少し省略) ---------------------------------------------------

    String schemaPath1 = "books.xsd";
    String documentPath = "books.xml";

    XmlValidatingReader reader = new XmlValidatingReader( new XmlTextReader(documentPath) );

    reader.ValidationType = ValidationType.Schema;

    reader.Schemas.Add(null, schemaPath1);

    reader.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

    XmlDocument doc= new XmlDocument();

    doc.Load(reader);

    richTextBox1.AppendText(String.Format("Validation finished: {0} validation errors\n\n", _ValidationErrorsCount));
    for(int i=0; i<_cnt; i++)
    {
    richTextBox1.AppendText(_msg[i]);
    }

    エラー内容 ---------------------------------------------------


    'urn:books:books' 要素が宣言されていません。 file:///C:/temp/schemas_book_org/books.xml (2 , 2) でエラーが発生しました。

    'owner' 要素が宣言されていません。 file:///C:/temp/schemas_book_org/books.xml (3 , 3) でエラーが発生しました。

    他にも沢山・・・
親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6613  Re[2]: Borland C# Builder で検証を
□投稿者/ サンダル -(2007/08/20(Mon) 17:08:19)
    シャノン さん こんにちは。
    コメントありがとうございます。

    No6611 (シャノン さん) に返信

    > XML Schema で targetNamespace が無いから?

    targetNamespace を付けたらエラーにならなくなりました。

    しかし、JavaScript ではエラーにならないのがよく分かりません。
    パーサーにより、結果が異なっているのでしょうか??

    JavaScript ---------------------------------------------------

    <html>
    <head>
    <title>XML文書の検証</title>
    <script language="JavaScript">
    <!--
    var objScm=new ActiveXObject("MSXML2.xmlSchemaCache.6.0");
    objScm.add("urn:books","C:\\temp\\schemas_book_org\\books.xsd");

    window.alert("add");

    var objDoc=new ActiveXObject("MSXML2.DOMDocument.6.0");
    objDoc.async=false;
    objDoc.schemas=objScm;

    objDoc.load("C:\\temp\\schemas_book_org\\books.xsd");

    window.alert("load");

    var objErr=objDoc.parseError;
    if(objErr.errorCode!=0){
    str=objErr.errorCode + "\r";
    str+=objErr.line + "行 " + objErr.srcText + "\r";
    str+=objErr.reason;
    window.alert(str);
    }
    else
    {
    window.alert("XML文書はスキーマに従っています");
    }
    //-->
    </script>
    </head>
    <body>
    <h1>XML SchemaでXML文書の構文チェック</h1>
    </body>
    </html>

記事No.6609 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6615  Xercesの使用で未定義エラー(C++Builder6)
□投稿者/ サンダル -(2007/08/20(Mon) 19:15:15)

    分類:[C/C++] 

    こんにちは。よろしくお願いします。

    C++Builder6でXercesを使用しようとしてまして、いきなりコンパイルエラーになり困っております。

    ・xerces-c-src_2_6_0をコンパイル(2_7_0はコンパイルの段階でエラーになったのでやめました)
    ・インクルードパスに (xercesのパス)\xerces-c-src_2_6_0\src を追加
    ・プロジェクトに追加で (xercesのパス)\Build\Win32\BCB6\XercesLib.lib を追加

    ソース------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"

    #include <xercesc/sax2/XMLReaderFactory.hpp>
    #include <xercesc/sax2/SAX2XMLReader.hpp>
    #include <xercesc/sax2/DefaultHandler.hpp>

    #include <xercesc/util/XMLUni.hpp>

    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;

    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    }

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    }


    エラー内容--------------------------------------------------------------------
    [C++ エラー] Unit1.cpp(30): E2451 未定義のシンボル SAX2XMLReader
    [C++ エラー] Unit1.cpp(30): E2451 未定義のシンボル parser
    [C++ エラー] Unit1.cpp(30): E2090 型限定子 'XMLReaderFactory' がクラス名または名前空間名ではない
    [C++ エラー] Unit1.cpp(30): E2379 ステートメントにセミコロン(;)がない


    原因の分かる方、ご教授願います。
親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6700  Re[7]: DataTableの次の行について
□投稿者/ 特攻隊長まるるう -(2007/08/22(Wed) 13:17:23)
    2007/08/22(Wed) 14:29:11 編集(投稿者)

    No6697 (ぽぴ王子 さん) に返信
    ん。。。もちろん、怒ってるわけではないですし、なんとなくの理解でも問題がなさそうな
    質問ならつっこみはいれません。解決してるのを引き伸ばしてるのには理由があります。
    バグが残りやすい部分だからです。どこでバグが残りやすいか分かってますか?と確認
    したいだけです。

    >ループの中で削除し、削除をすればi--をし、Rows.Countとiがイコールになればループを抜けるという処理をして解決です。
    うん、プログラム自体はそうなんだけど、実際の動きで問題となる2点が理解できている
    かどうか?が重要です。
    1点目は、削除されたアイテム数だけインデックスがずれるということ。
    2点目は、ずれたインデックスでループを回すとループ処理が実行されないアイテムが
    できるということ。

    コードで i-- を入れれば。。。という理解ではなくて、例えばうまくいかなかった時点で
    以下のような動きを紙に書いて、どこに問題があるか見つけられるか?ということ。

    (index)アイテム名
    ------------------------------
     (0)アイテム0
     (1)アイテム1
     (2)アイテム2
     (3)アイテム3

    ループカウント(0)
     (0)アイテム0<チェック(削除条件満たさずそのまま)
     (1)アイテム1
     (2)アイテム2
     (3)アイテム3

    ループカウント(1)
     (0)アイテム0
     (1)アイテム1<チェック(削除条件満たす)
     (2)アイテム2
     (3)アイテム3

    ループカウント(1)(アイテム1削除)
     (0)アイテム0
     (1)アイテム2
     (2)アイテム3

    ループカウント(2)
     (0)アイテム0
     (1)アイテム2
     (2)アイテム3<チェック

    ※アイテム2がチェックされていない

    削除後にインデックスを減らす処理で同じような図を書いて、
    問題点が解決されていることを確かめてください。
    >そこでDataTableの次の行がないときループを抜けるという処理を入れようと思うのですが
    この方法ではバグが残りますよね?。。。理解できましたか?

    # 分類が[VB.NET/VB2005]だけどC#も分かるんだよね?
    >  for (int i = 0; i < dtRows.Count; i++)
    毎回、dtRows.Count が評価しなおされるなら正常に処理できます。これが
      intCount = dtRows.Count
      for (int i = 0; i < intCount; i++)
    のような動きではだめです。

    処理系によってはあるのですよ。ループの終了条件が初回のみ評価されて
    2回目以降にループ内で変更した値が反映されないのが。
    ↓ちょうどこんな質問を見つけました。
    http://rucio.bbs.coocan.jp/?m=listthread&t_id=13&summary=on

    ま、その場合は
    (1)ループカウンタとは別に削除したアイテム数を変数に覚えておいて、ループ内の
    処理でループカウンタから削除したアイテム数分引いたインデックスを持つアイテム
    に対して処理をする。
    ↑これならループカウンタには変更を加えず、先頭から処理できます。

    ちょっと頭を使えば、インデックスが変更されるのは削除したアイテムより
    後ろのアイテムのみだから、
    (2)リストの最後からループを逆に回す。(ぽぴ王子さんの方法)

    などがあるということです。
記事No.6685 のレス / END /過去ログ17より / 関連記事表示
削除チェック/

■6715  VB2005からDLL(VC6.0)への配列渡しについて
□投稿者/ onon -(2007/08/22(Wed) 17:35:06)

    分類:[VB.NET/VB2005] 

    VB2005からDLL(VC6.0)へ配列を渡したいのですが、
    VB2005では、配列がメモリ上で連続していない(配列は参照型)ため、
    下記コード「hoge(num(0), 5)」で、numの先頭ポインタがDLLに渡って、
    配列1番目の実体は取り出せるが、配列2番目以降が連続していないため、取りだせない

    ---<VB2005>---------------------------------------------------------------------------
    Private Declare Function hoge Lib "hogehoge.dll" (ByRef IntPtr as Integer, _
    ByVal Num as Integer) as Integer
    Public Class mahi
    :

    Public Sub mahimahi()

    dim sum as Integer
    dim num(4) as Integer = {1, 2, 3, 4, 5}

    'hogeはnum配列の加算結果を返す
    sum = hoge(num(0), 5)
    end Sub
    end Class
    ----------------------------------------------------------------------------

    VB2005で、配列を連続するメモリで確保する方法はありますか?

親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6771  DataGridViewのヘッダの結合
□投稿者/ Ri -(2007/08/23(Thu) 16:10:31)

    分類:[.NET 全般] 

    お世話になります。

    DataGridViewのヘッダを結合したいですが、

    A | B
    -------------------
    1 | 1 | 1
    2 | 2 | 2
    3 | 3 | 3
    --------------------

    以上のスタイルはどうすれば実現できますか。
親記事 /過去ログ17より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

ヒット件数が多いので過去ログ1〜20 までの検索結果 / 過去ログ21からさらに検索→

パスワード/

- Child Tree -