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 >>
■28580  Re[8]: バイナリコード内の16進数での文字列検索
□投稿者/ ま -(2008/11/28(Fri) 00:52:45)
    No28578 (あんどちん さん) に返信
    >
    > ■No28572 (ま さん) に返信
    >>unsigned char a = 00110000b;
    > これ通りますか?
    > unsigned char a = 0x30; /* 00011 0000 */
    > の方が無難かと
    >

    ええー通らないんですか・・・00110000b って何だっけ????アセンブラか何かだったか???

    がーん。
    http://www.nmn.jp/~hidai/c/
    ここに2進数は扱えません、って書いてある。。。


    ごめんさい。

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

■28590  Re[9]: バイナリコード内の16進数での文字列検索
□投稿者/ .SHO -(2008/11/28(Fri) 08:58:39)
    No28580 (ま さん) に返信

    > ええー通らないんですか・・・00110000b って何だっけ????アセンブラか何かだったか???

    かなり昔だけど「00110000b」を「0x30」に変換するマクロを作りました。
記事No.28511 のレス /過去ログ52より / 関連記事表示
削除チェック/

■29569  Re[1]: 四捨五入
□投稿者/ .SHO -(2008/12/10(Wed) 18:22:18)
    No29561 (蝋燭 さん) に返信

    偶数丸めじゃなく四捨五入だったら

    double d = 0.11145;
    d = (double) ( ( ( ( (int) ( d * 100000 ) + 5 ) / 10 ) + 5 ) / 10000.0 );

    で、一応できます。
記事No.29561 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29572  Re[2]: 四捨五入
□投稿者/ みきぬ -(2008/12/10(Wed) 18:33:25)
    2008/12/10(Wed) 18:34:49 編集(投稿者)

    No29569 (.SHO さん) に返信
    > 偶数丸めじゃなく四捨五入だったら
    >
    > double d = 0.11145;
    > d = (double) ( ( ( ( (int) ( d * 100000 ) + 5 ) / 10 ) + 5 ) / 10000.0 );
    >
    っ【負数】

    -----
    …だけじゃ意味不明なのでもうちょっと書くと、
    負数を処理した結果に違いが出るので注意してください。
記事No.29561 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29539  Re[10]: 正規表現
□投稿者/ みきぬ -(2008/12/10(Wed) 14:52:26)
    正規表現を使わない方法(脳内のみ・未検証)

    ・とりあえず decimal に Parse してみる → できなかったら NG
    ・decimal に Parse したものを ToString() して、元の文字列と比較 → 異なっていたら NG
    ・decimal に Parse したものを 100 倍して、-100000 以上 100000 以下の整数だったら OK
記事No.29481 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29926  Re[6]: テンプレート変数からイテレータ変数の宣言
□投稿者/ 七篠 -(2008/12/16(Tue) 16:01:56)
    お返事ありがとうございます。

    No29908 (774RR さん) に返信
    > いいのか悪いのかは実装を見ないとわからないよ。
    振る舞いを何も考えずにそのまま実装したものです。
    たとえば Iterate_Begin であれば、メンバのイテレータに
    メンバのリストの begin の返り値を入れるだけです。

    > ・マルチスレッドシステムにおいて同一オブジェクト (foo) に対するループが
    >  まったく同時に走る場合にまずくないか?
    > ・例外安全についてどれだけ考察されているか?
    この二つは全く考えていませんでした。 例外とは、イテレータが
    不正な値を参照した状態で中身を返さないように気をつけるといったこと
    でしょうか? マルチスレッドについては勉強不足で分かりません。

    > ・インスタンス変数(メンバ変数)とローカル変数 (自動変数にとった iterator) とでは
    >  アクセス速度が違うんだが性能がきっちり出せるか?
    STL の素のリストとラップしたリストで、1 〜 10000 までの数字を文字にして要素として追加し、
    すべてコンソールに出力するテストをしてみました。 結果はほとんど
    同じでした。(timeGetTime にて計測)
記事No.29827 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29937  Re[8]: テンプレート変数からイテレータ変数の宣言
□投稿者/ 七篠 -(2008/12/16(Tue) 18:01:44)
    お返事ありがとうございます

    No29934 (774RR さん) に返信
    > template<typename T> struct List {
    > list<T> list;
    > list<T>::iterator it;
    > void iterate_begin() { it=list.begin(); }
    > bool iterate_isend() { return it!=list.end(); }
    > void iterate_next() { ++it; }
    > };
    > であるとして。
    ほぼこれと同じです。 違いはイテレータを進める処理が中身の取得時って事だけです。

    > 次にこれはスレッド安全ではなく、再帰安全でもない。
    > 複数のスレッドから同時に it を操作してしまうと互いに壊しあってしまう。
    > 反復中に呼び出すルーチンから再度 it を操作してしまうと壊れてしまう。
    > なのでお勧めできない。俺ならこういうコードは書かない。
    ミューテックスで保護するのでは駄目でしょうか?

    > この it はローカル変数なのでスレッド安全であるし、再帰安全でもある。お勧め。
    変数の保護までする必要があるとなると、結果的にこちらの方が簡潔ですね。
    (再帰安全に関しては少し調べてみましたが分かりませんでした)

    > 速度の件なんだけど、メンバ変数と自動変数で1回の反復につき数クロック違うだけだよ。
    > 10000回のループなどでは観測できっこないよ。特に、画面出力などしてれば余計に。
    画面出力なしで 1000000 程まわしたところ、STL の方が 500 ms 早かったです。

    > # だけど C++ ユーザってその数クロックを気にしたりするわけで
    確かに自分もそういったことが気になりますね。 最近は C# を使っていて、
    すごく楽で気に入っていました。 しかし、速度は C++ の方が早いということで、
    C++ で C# ライクにコードを書けるように創意工夫中で、今回の質問もその一環です。
    C# でのリストなどの型指定は変数宣言時だけなので、
    スレッドの問題がイテレータの保護ですむのであれば、出来れば先に提示した
    形で扱いたいのですが…
記事No.29827 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29949  Re[7]: テンプレート変数からイテレータ変数の宣言
□投稿者/ あんどちん -(2008/12/16(Tue) 22:34:44)
    遅レスですが…

    No29926 (七篠 さん) に返信
    > ほぼこれと同じです。 違いはイテレータを進める処理が中身の取得時って事だけです。
    774RRさんのコードのようにイテレータ更新を別メソッドにした方が汎用性が上がると思いますよ。
    中身の取得をすると更新されては同じ位置のデータを2回取ることが難しくなります。イテレータ更新はfor文の中で行うでしょうからプログラム行数もまず変わりませんし。

    > STL の素のリストとラップしたリストで、1 〜 10000 までの数字を文字にして要素として追加し、
    > すべてコンソールに出力するテストをしてみました。 結果はほとんど
    > 同じでした。(timeGetTime にて計測)
    >
    List<T>のインスタンスをローカルに生成していませんか?
    その場合List<T>内のイテレータもフレームポインタからのオフセットで参照できるので、イテレータをローカル変数で宣言して処理する場合とほとんど変わらない実行コードが出来ると思います。
    あと、コンソール出力も時間計測の中に入れると、その処理時間が大き過ぎて差が出にくいということもあり得ます。
記事No.29827 のレス /過去ログ53より / 関連記事表示
削除チェック/

■30085  Re[4]: 値の引渡し
□投稿者/ ホステス -(2008/12/18(Thu) 02:12:07)
    No30064 (はつね さん) に返信
    丁寧にありがとうございます。
    一応、先ほど書いたあとの続きも記入しておきます。
      ss = " SELECT distinct 事業所略称 FROM TBL_職制 where 事業所コード > '000' order by 事業所略称 "
        rs.Open ss, dbman.cn(DB00), adOpenKeyset, adLockReadOnly
    
        Cmbjiname.AddItem ""
        If Not rs.BOF And Not rs.EOF Then
            For i = 0 To rs.RecordCount - 1
                Cmbjiname.AddItem rs(0)
                rs.MoveNext
            Next i
            Cmbjiname.ListIndex = 0
        End If
        rs.Close
        Set rs = Nothing
    
        formloadflag = False
    
    
    End Sub
    Sub set_grid_data()
        Dim ss1 As String
        Dim ss2 As String
        Dim s1 As String
        Dim i As Integer
        Dim j As Integer
        Dim Gdata1 As String
        Dim k4 As String
        Dim k5 As String
    
    
        ClearGrid Grid1
        Cmdprt.Enabled = False
    
        If formloadflag = True Then Exit Sub
    
        If KeyText = "" Then
            SetGridDataNOTHING Grid1, "上記で検索条件を入力又は選択してください。"
            Frame2.Caption = "検索結果"
            Exit Sub
        End If
    
    
        ss1 = "SELECT COUNT(*) FROM TBL_職制 where 事業所コード>'000'"
        ss2 = "SELECT 受注元コード AS 受注元c,事業所コード AS 事業所c,部コード AS 部c,事業所略称,部略称,課略称,"
        ss2 = ss2 & "事業所名称, 課名称 FROM TBL_職制 where 事業所コード>'000'"
    
        If Text1(0).Text <> "" Then s1 = s1 & " and 受注元コード like '" & StrConv(Text1(0).Text, vbUpperCase) & "%'"
        If Cmbjic.Text <> "" Then s1 = s1 & " and 事業所コード = '" & Cmbjic.Text & "'"
        If Text1(1).Text <> "" Then s1 = s1 & " and 部コード like '" & StrConv(Text1(1).Text, vbUpperCase) & "%'"
        If Cmbjiname.Text <> "" Then s1 = s1 & " and 事業所略称 = '" & Cmbjiname.Text & "'"
        'If Text1(2).Text <> "" Then s1 = s1 & " and 部略称 like '%" & StrConv(Text1(2).Text, vbUpperCase + vbWide) & "%'"
        'If Text1(3).Text <> "" Then s1 = s1 & " and 課略称 like '%" & StrConv(Text1(3).Text, vbUpperCase + vbWide) & "%'"
        k4 = Text1(2).Text
        k5 = Text1(3).Text
        If k4 <> "" Then
            Select Case CmbSelLike(0)
                Case "で始まる"
                    s1 = s1 & " and 部略称 like '" & k4 & "%' collate Japanese_CI_AI "
                Case "を含む"
                    s1 = s1 & " and 部略称 like '%" & k4 & "%' collate Japanese_CI_AI  "
                Case "で終わる"
                    s1 = s1 & " and 部略称 like '%" & k4 & "' collate Japanese_CI_AI  "
            End Select
        End If
    
        If k5 <> "" Then
            Select Case CmbSelLike(1)
                Case "で始まる"
                    s1 = s1 & " and 課略称 like '" & k5 & "%' collate Japanese_CI_AI  "
                Case "を含む"
                    s1 = s1 & " and 課略称 like '%" & k5 & "%' collate Japanese_CI_AI  "
                Case "で終わる"
                    s1 = s1 & " and 課略称 like '%" & k5 & "' collate Japanese_CI_AI  "
            End Select
    
        End If
    
    
        rs.Open ss1 & s1, dbman.cn(DB00), adOpenKeyset, adLockReadOnly
        If Not rs.BOF And Not rs.EOF Then
            Frame2.Caption = "検索結果 (対象:" & rs(0) & " Record)"
        End If
        rs.Close
        Set rs = Nothing
        ss2 = ss2 & s1 & " ORDER BY 事SEQ, 部SEQ, 課SEQ "
    
    
        rs.Open ss2, dbman.cn(DB00), adOpenKeyset, adLockReadOnly
    
    
        If Not rs.BOF And Not rs.EOF Then
            With Grid1
                .Font.Size = 9
                .Redraw = False
                .Cols = rs.Fields.Count + 1
                For j = 0 To rs.Fields.Count - 1
                    .Row = 0
                    .Col = j
                    .FixedAlignment(j) = 4
                    Select Case j
                        Case 0, 1
                            .ColAlignment(j) = 4
                            .ColWidth(j) = 800
                        Case 2
                            .ColAlignment(j) = 4
                            .ColWidth(j) = 520
                        Case 3
                            .ColWidth(j) = 1500
                        Case 4, 5
                            .ColWidth(j) = 2000
                        Case 6
                            .ColWidth(j) = 3300
                        Case 7
                            .ColWidth(j) = 4160
                        Case Else
                            .ColWidth(j) = 1200
    
                    End Select
    
                    .Text = rs.Fields(j).Name
                    .Row = 1
                    .Col = j
                    'Grid1.ColAlignment(j) = 4
    
                Next j
                .ColWidth(rs.Fields.Count) = 0
    
    
                For i = 0 To rs.RecordCount - 1
                    Gdata1 = ""
                    For j = 0 To rs.Fields.Count - 1
                        Gdata1 = Gdata1 & Trim(rs(j)) & Chr(9)
                    Next j
                    .AddItem Gdata1
    
                    rs.MoveNext
                Next i
    
                .RemoveItem 1
    
            End With
            Cmdprt.Enabled = True
        Else
            SetGridDataNOTHING Grid1, "該当データはございませんでした。検索条件を見直してください。"
    
        End If
        rs.Close
        Set rs = Nothing
    
        Grid1.Redraw = True
    End Sub
    Private Function KeyText() As String
        KeyText = ""
        ss = ""
        For i = 0 To 3
            ss = ss & Trim(Text1(i))
        Next i
        ss = ss & Cmbjic.Text
        ss = ss & Cmbjiname.Text
    
        KeyText = ss
    End Function
    
    Private Sub Form_Resize()
    With frmJcsD010
        If .Width > 10000 And .Height > 8000 Then
            Frame1.Width = .Width - 200
            Frame2.Width = .Width - 200
            Frame2.Height = .Height - 2700
            Grid1.Width = .Width - 310
            Grid1.Height = Frame2.Height - 350
            Cmdend.Top = Frame2.Top + Frame2.Height + 200
            Cmdend.Left = .Width - 1700
            set_grid_data
        End If
    End With
    End Sub
    
    
    'Form1の表示
    Private Sub Grid1_DblClick()
    Form1.Show
    End Sub
    
    
    Private Sub Grid1_KeyPress(KeyAscii As Integer)
        SelectionRow Grid1
    End Sub
    
    Private Sub Grid1_RowColChange()
    If printproc = True Then Exit Sub
        SelectionRow Grid1
    End Sub
    
    Private Sub mnuFilePrint_Click()
    DirectPrintForm Me, printpic
    End Sub
    
    Private Sub mnuHelpAbout_Click()
        frmJcsVer.Show 1
    End Sub
    
    Private Sub mnuiken_Click()
        epFirstForm = "frmJcsD010"
        ep = JoinExeParam
    
            WShell op.PathEXE + "JCSWPRG.exe " & ep & "U", 0
    
    End Sub
    
    Private Sub Text1_DblClick(Index As Integer)
        Text1(Index).Text = ""
        set_grid_data
    End Sub
    
    Private Sub Text1_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)
        set_grid_data
    End Sub
    
記事No.30030 のレス /過去ログ54より / 関連記事表示
削除チェック/

■30915  Re[3]: Oracleから取得した画像ファイルの表示について
□投稿者/ 魔界の仮面弁士 -(2009/01/08(Thu) 21:18:09)
    2009/01/08(Thu) 21:35:30 編集(投稿者)

    No30905 (ひでき さん) に返信
    > OracleConnection connection = new OracleConnection("Data Source=XXX;User ID=XXX;Password=XXX;");
    Using / Close は?

    > 画面のPictureBoxに表示したい。
    Long Raw に、生のバイナリがそのまま格納されているのであれば、
    最初の No30893 のコードで、問題無く表示できますよ。


    > Accessからリンクを張り
    > メニューの「挿入」→「オブジェクト」
    > から画像ファイルを選択し、登録を行いました。。
    それはつまり、ODBCリンクテーブルに対しての操作ですよね。
    Access VBA のアプリならば良いですが、C# アプリで使うのであれば、
    その登録方法は避けてください。

    Access の[挿入]メニューからの場合、ファイルの生バイナリが挿入されるわけでは無く、
    OLE (パッケージャ)オブジェクトとしてのデータ挿入が行われる事になります。
    http://support.microsoft.com/kb/884484/ja

    このため、データ内に OLE ヘッダ情報が付加されてしまう結果となり、
    元ファイルのバイナリとは一致しなくなってしまいます。

    データ内容から、元データを予想して取り出す方法もありますが、
    そもそもは、ファイルの生バイナリを登録しておくべきでしょう。
    http://support.microsoft.com/kb/175261/ja


    たとえば、Oracle 上に
     CREATE TABLE XXX (XXX_CODE CHAR(3) PRIMARY KEY, PIC LONG RAW)
    なテーブルを用意してあるのだとします。


    C# から登録するのであれば、たとえばこんな感じ。

    string sql = "INSERT INTO XXX (XXX_CODE, PIC) VALUES (:ID, :IMG)";
    using (OracleCommand cmd = new OracleCommand(sql, connection))
    {
    OracleParameter ID = cmd.Parameters.Add("ID", OracleType.Char, 3);
    OracleParameter IMG = cmd.Parameters.Add("IMG", OracleType.LongRaw);

    ID.Value = "123";
    IMG.Value = File.ReadAllBytes(@"C:\a.bmp");

    connection.Open();
    cmd.ExecuteNonQuery();
    connection.Close();
    }


    No30905 (ひでき さん) に返信
    > Oracle専用に登録する手段があるならば
    > そちらの方が良いとは思うのですが実行できていません;
    生のバイナリを Oracle に登録するための画面は、Access 側には用意されていないので、
    SQL で直接指定するか、Access VBA から AppendChunk メソッドを呼び出さねばなりません。


    VBA のコードは書いても仕方ないので、SQL の記述例を書いておきます。
    (下記では、画像のバイナリデータを 16進数にて指定しています)

    ****** ODBC リンクテーブルの場合 ******

    INSERT INTO リンクテーブル名 (XXX_CODE, PIC) VALUES (
    '123',
    0x424D860000000000000076000000280000000400000004000000010004000000000010000000C40E0000C40E000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00AECD000026450000F89B000007130000
    )

    ****** パススルー クエリの場合 ******

    INSERT INTO XXX (XXX_CODE, PIC) VALUES (
    '123',
    HEXTORAW('424D860000000000000076000000280000000400000004000000010004000000000010000000C40E0000C40E000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00AECD000026450000F89B000007130000')
    )
記事No.30893 のレス /過去ログ55より / 関連記事表示
削除チェック/

■31006  Re[4]: Oracleから取得した画像ファイルの表示について
□投稿者/ ひでき -(2009/01/13(Tue) 11:07:04)
    No30915 (魔界の仮面弁士 さん) に返信
    > 2009/01/08(Thu) 21:35:30 編集(投稿者)
    >
    > ■No30905 (ひでき さん) に返信
    >>OracleConnection connection = new OracleConnection("Data Source=XXX;User ID=XXX;Password=XXX;");
    > Using / Close は?
    >
    >>画面のPictureBoxに表示したい。
    > Long Raw に、生のバイナリがそのまま格納されているのであれば、
    > 最初の No30893 のコードで、問題無く表示できますよ。
    >
    >
    >>Accessからリンクを張り
    >>メニューの「挿入」→「オブジェクト」
    >>から画像ファイルを選択し、登録を行いました。。
    > それはつまり、ODBCリンクテーブルに対しての操作ですよね。
    > Access VBA のアプリならば良いですが、C# アプリで使うのであれば、
    > その登録方法は避けてください。
    >
    > Access の[挿入]メニューからの場合、ファイルの生バイナリが挿入されるわけでは無く、
    > OLE (パッケージャ)オブジェクトとしてのデータ挿入が行われる事になります。
    > http://support.microsoft.com/kb/884484/ja
    >
    > このため、データ内に OLE ヘッダ情報が付加されてしまう結果となり、
    > 元ファイルのバイナリとは一致しなくなってしまいます。
    >
    > データ内容から、元データを予想して取り出す方法もありますが、
    > そもそもは、ファイルの生バイナリを登録しておくべきでしょう。
    > http://support.microsoft.com/kb/175261/ja
    >
    >
    > たとえば、Oracle 上に
    >  CREATE TABLE XXX (XXX_CODE CHAR(3) PRIMARY KEY, PIC LONG RAW)
    > なテーブルを用意してあるのだとします。
    >
    >
    > C# から登録するのであれば、たとえばこんな感じ。
    >
    > string sql = "INSERT INTO XXX (XXX_CODE, PIC) VALUES (:ID, :IMG)";
    > using (OracleCommand cmd = new OracleCommand(sql, connection))
    > {
    > OracleParameter ID = cmd.Parameters.Add("ID", OracleType.Char, 3);
    > OracleParameter IMG = cmd.Parameters.Add("IMG", OracleType.LongRaw);
    >
    > ID.Value = "123";
    > IMG.Value = File.ReadAllBytes(@"C:\a.bmp");
    >
    > connection.Open();
    > cmd.ExecuteNonQuery();
    > connection.Close();
    > }
    >
    >
    > ■No30905 (ひでき さん) に返信
    >>Oracle専用に登録する手段があるならば
    >>そちらの方が良いとは思うのですが実行できていません;
    > 生のバイナリを Oracle に登録するための画面は、Access 側には用意されていないので、
    > SQL で直接指定するか、Access VBA から AppendChunk メソッドを呼び出さねばなりません。
    >
    >
    > VBA のコードは書いても仕方ないので、SQL の記述例を書いておきます。
    > (下記では、画像のバイナリデータを 16進数にて指定しています)
    >
    > ****** ODBC リンクテーブルの場合 ******
    >
    > INSERT INTO リンクテーブル名 (XXX_CODE, PIC) VALUES (
    > '123',
    > 0x424D860000000000000076000000280000000400000004000000010004000000000010000000C40E0000C40E000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00AECD000026450000F89B000007130000
    > )
    >
    > ****** パススルー クエリの場合 ******
    >
    > INSERT INTO XXX (XXX_CODE, PIC) VALUES (
    > '123',
    > HEXTORAW('424D860000000000000076000000280000000400000004000000010004000000000010000000C40E0000C40E000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00AECD000026450000F89B000007130000')
    > )

    返信ありがとうございます。



    教えて頂いたやり方にて、
    > string sql = "INSERT INTO XXX (XXX_CODE, PIC) VALUES (:ID, :IMG)";
    > using (OracleCommand cmd = new OracleCommand(sql, connection))
    > {
    > OracleParameter ID = cmd.Parameters.Add("ID", OracleType.Char, 3);
    > OracleParameter IMG = cmd.Parameters.Add("IMG", OracleType.LongRaw);
    >
    > ID.Value = "123";
    > IMG.Value = File.ReadAllBytes(@"C:\a.bmp");
    >
    > connection.Open();
    > cmd.ExecuteNonQuery();
    > connection.Close();
    > }
    画像を登録し読み込みを行ったらところ
    画像表示ができました!
    本当にありがとうございます。

    画像登録についてはこのような方法で
    バイナリを登録するんですね。
    大変勉強になりました。

    本当ありがとうございました。
    今後ともよろしくお願い致します。
記事No.30893 のレス / END /過去ログ55より / 関連記事表示
削除チェック/

■30775  DataGridViewにデータが表示されない
□投稿者/ たこやき -(2009/01/06(Tue) 14:00:53)

    分類:[C#] 

    C#2008
    単独のテーブルを次のLINQ式で絞り込みを実施し、
    DataGridViewに表示させています。
    var aa =
    from p in myDataSet.aaa
    where p.ID == 100000
    select p;
    aaaBindingSource.DataSource = aa.AsDataView();
    ところが、この式で絞り込めるものと、絞り込めないものがあります。
    絞り込めない場合は、DataGridViewに白紙行が複数行表示されます。

      100000は一意の識別子なので、複数行表示されないはずなのですが。
      その証拠に、
      foreach(var a in aa )
         Console.WriteLine(a["ID"])
      で絞り込んだデータが正しく表示されます。

    原因らしきものが思いつかないので、再現できませんが、
    考えられることがわかれば、お教え下さい。
親記事 /過去ログ55より / 関連記事表示
削除チェック/

■30896  Re[1]: DataGridViewにデータが表示されない
□投稿者/ みきぬ -(2009/01/08(Thu) 18:00:06)
    > ところが、この式で絞り込めるものと、絞り込めないものがあります。
    >
    どういう場合に絞り込めて、どういう場合に絞り込めないの?
    ID = 100000 だと絞り込めないってこと?

    >   100000は一意の識別子なので、複数行表示されないはずなのですが。
    >
    ID がユニークキーという解釈であってる?

    >   その証拠に、
    >   foreach(var a in aa )
    >      Console.WriteLine(a["ID"])
    >   で絞り込んだデータが正しく表示されます。
    >
    これは何を確認してるの?
    「絞り込めない場合は、DataGridViewに白紙行が複数行表示されます。」の状態でも「絞り込んだデータが正しく表示されます。」という意味だとしたら、LINQ は関係ないんでない?
記事No.30775 のレス /過去ログ55より / 関連記事表示
削除チェック/

■30907  Re[2]: DataGridViewにデータが表示されない
□投稿者/ たこやき -(2009/01/08(Thu) 19:09:06)
    No30896 (みきぬ さん) に返信
    ご返信ありがとうございます。

    >>ところが、この式で絞り込めるものと、絞り込めないものがあります。
    > どういう場合に絞り込めて、どういう場合に絞り込めないの?
    > ID = 100000 だと絞り込めないってこと?

    絞り込みに失敗するテーブルは、住所と氏名のテーブルで
    住所のフィールド構成は以下の通りで、数千件入っています。
    ID 郵便 県名 住所 番地 建物 TEL FAX TEL2 住所備考 旧ID

    成功するテーブルのフィールドは以下の通りで、十数件データが入ってます。
    ID 列1 列2 列3 …… 列20

    共にデータソースにテーブルを登録して、ドラッグ&ドロップする形で
    フォーム上にDataGridViewを作成しています。

    その状態で、
    int myID = 0; // テスト用に初期設定

    myID++;
    var aa =
    from p1 in myDataSet.aaa
    where p1.ID == myID
    select p1;
    aaaBindingSource.DataSource = aa.AsDataView();

    var bb =
    from p2 in myDataSet.住所
    where p2.ID == myID
    select p2;
    住所BindingSource.DataSource = bb.AsDataView();

    のようにしていますが、
    住所の方の結果は、数行の完全な白紙行が作成されます。

    しかし、
      foreach(var a in aa )
         Console.WriteLine(a["ID"] + a["住所"])
    で、LINQ結果を表示させると、
    IDに該当する住所が表示されます。
    例えば、
     1000001 大阪市平野区……と
    ですから、LINQ結果は正しく行われているものと思います。
    しかし、その結果をDataGridViewに反映できないのだと思います。


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

■30908  Re[3]: DataGridViewにデータが表示されない
□投稿者/ たこやき -(2009/01/08(Thu) 19:12:49)
    訂正
    int myID = 1000000;  
    です。
記事No.30775 のレス /過去ログ55より / 関連記事表示
削除チェック/

■31503  Re[5]: バイナリィデータ
□投稿者/ たけし -(2009/01/22(Thu) 23:43:55)
    どうしても演算データを取ることが出来ません。
    企業の人に問い合わせたところ可能とのことでしたが…
    
    作成したプログラムを載せますのでよかったら見てください;
         
    
    
                byte[] buffer2 = new byte[100000]; //機器からデータを受信する
                byte[] buffer = new byte[100000]; //機器からデータを受信する
                string bufferdata = "";
    
    
                for (int ia = 10; 2 * ia < 2011; ia++)
                {
                    buffer[ia-10] = BitConverter.ToInt16(buffer2,ia);  
                }
                string bufferdata = "";
                StreamWriter address = new StreamWriter(@"C:\結果\" + ".txt");
                {
                    for (ia = 0; ia <= 1000; ia++)
                    {
                        bufferdata += buffer[ia] * vdv / div + ofs + "\r\n";//DL4000系での換算係数
    
                    }
                    address.WriteLine(bufferdata);
                }
    
                address.Close();
    
記事No.31277 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31594  Re[8]: バイナリィデータ
□投稿者/ たけし -(2009/01/24(Sat) 18:58:19)
    2009/01/24(Sat) 19:39:48 編集(投稿者)
    2009/01/24(Sat) 19:23:06 編集(投稿者)

    <pre><pre> byte[] buffer2 = new byte[100000];// 読み込みデータ
    oshirodevice.Write("WAVEFORM:SEND?" + "\n");
    buffer2 = oshirodevice.ReadByteArray(10000);


    デバッグを途中で止めた際にbuffer2に格納されているもの

    [0]35
    [1]52
    [2]50
    [3]48
    [4]48
    [5]52
    [6]83
    [7]0
    [8]179
    [9]255
    [10]131
    [11]255
    [12]91
    [13]0
    [14]119
    [15]0
    [16]17
    [17]255
    [18]181
    [19]14
    [20]187


    このようになっています。
    [20]以下は同じようなデータが繰り返されるので省かせていただきます。
    [2011]まで数値が入っていました。

    1001点を演算した結果です。
    </pre></pre>


    おそらく、[0]〜[5]に#42002という文字列が入り、

    [6][7]で一つのデータ…というふうになると思います。
記事No.31277 のレス /過去ログ56より / 関連記事表示
削除チェック/

■33524  Re[4]: C#でRC4の暗号化と複合化
□投稿者/ べん吉 -(2009/03/03(Tue) 12:57:26)
>
    No33523 (太郎冠者 さん) に返信
    > ■No33516 (べん吉 さん) に返信
    >>宜しくお願いします。
    >
    > 何を??
    > エラーが出たなら詳細も載せてくださいな

    ありがとうございます。

    ソースを、下記のとおり変更する事でエラーが無くなり、
    暗号化→複合ができるようになりました。

    // static public long m_nBoxLen = 255;
    static public long m_nBoxLen = 128;

    ただ、こちらで期待している値と違う結果が返されます。
    元のプログラムから、RC4暗号化と思っておりましたが、
    間違っているのか調べています。

    元ソース(C++2003)では下記の手順で処理しています。
    ------------------------------------------------------------------
    #define PASSWORD "1234567890abcdef"
    #define KEYLENGTH_128 0x0080 * 0x10000 // 128-bit
    #define BYTELENGTH 128

    // キーコンテナーの取得
    CryptAcquireContext(&hProv,NULL,MS_ENHANCED_PROV,PROV_RSA_FULL,0);
    // ハッシュ計算のインスタンス生成
    CryptCreateHash(hProv,CALG_SHA,0,0,&hHash);
    // ハッシュデータ生成
    CryptHashData(hHash,(BYTE*)PASSWORD,(DWORD)strlen(PASSWORD),0);
    // 鍵の生成
    CryptDeriveKey(hProv,CALG_RC4,hHash,KEYLENGTH_128,&hKey);

    // 暗号化
    CryptEncrypt(hKey,0,TRUE,0,pbData,&dwDataLen,BYTELENGTH);

    // 複合
    CryptDecrypt(hKey,0,TRUE,0,pbData,&dwDataLen);
    ------------------------------------------------------------------

    根本的にRC4でないなど、そのような問題でしょうか?

    申し訳ありませんが、宜しくお願いします。
記事No.33498 のレス /過去ログ59より / 関連記事表示
削除チェック/

■33697  listView1.Items.Add を別クラスで
□投稿者/ Ao -(2009/03/07(Sat) 14:51:54)

    分類:[.NET 全般] 

    ListViewにアイテムを追加する件で質問です。
    プロジェクトを新規作成するとForm1クラスが作成されますが、他のクラス内でListViewに追加処理する記述をして、
    それをForm1内で呼ぶといった処理をしてもListViewに登録してくれませんが、このような使い方は不可ですか?
    現在、タイムスタンプを更新するアプリを作っているのですが、OpenFileDialogからファイルを10000個など呼び込むと、
    文字列のバッファオーバーになるので、Win32APIのGetOpenFileNameを使ってダイアログを表示させることにしましたが、
    別クラスにて記述しており、最終的にダイアログからファイル名を取得してそこで、ListViewに登録する記述をして。。
    のような流れになっておりどうしようか悩んでます。

    http://bbs.wankuma.com/index.cgi?mode=al2&namber=161&KLOG=1
    の  C#に首ったけ さんの ■175 / inTopicNo.12 内のソースを
    かなり参考にさせていただいてます。

    環境
    WinXP Pro SP2
    VS.net 2005 C#

    namespace listview_test_project
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {
    }
    private void button1_Click(object sender, EventArgs e)
    {
    other_class test = new other_class();
    test.add();
    }
    }
    public class other_class
    {
    public void add()
    {
    Form1 frm1 = new Form1();
    string[] a = {"aaa","bbb"};
    frm1.listView1.Items.Add(new ListViewItem(a));
    }
    }
    }
親記事 /過去ログ59より / 関連記事表示
削除チェック/

■33926  ファイルアイコンを取得し、リストビューに表示
□投稿者/ hide123 -(2009/03/13(Fri) 14:25:39)

    分類:[C#] 

    環境
    ・WindowsXP
    ・Visual C# 2008 Express Edition

    お世話になります。
    ファイルアイコンを取得し、そのアイコンをリストビューに表示させたいのですが、
    リストビューに表示されずに困っています。どこがわるいか指摘頂けないでしょうか。
    よろしくお願いします。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    using System.Windows;
    using System.Runtime.InteropServices;
    using System.IO;

    namespace IconExtract
    {
    public partial class Form1 : Form
    {
    // --------------------------------------------
    // アイコン取得用のWin32 API
    // --------------------------------------------
    // SHGetFileInfo関数
    [DllImport("shell32.dll")]
    private static extern IntPtr SHGetFileInfo
    (string pszPath,
    uint dwFileAttributes,
    ref SHFILEINFO psfi,
    uint cbSizeFileInfo,
    uint uFlags);

    // SHGetFileInfo関数で使用するフラグ
    private enum shfileflg
    {
    SHGFI_ICON = 0x000000100,
    SHGFI_DISPLAYNAME = 0x000000200,
    SHGFI_TYPENAME = 0x000000400,
    SHGFI_ATTRIBUTES = 0x000000800,
    SHGFI_ICONLOCATION = 0x000001000,
    SHGFI_EXETYPE = 0x000002000,
    SHGFI_SYSICONINDEX = 0x000004000,
    SHGFI_LINKOVERLAY = 0x000008000,
    SHGFI_SELECTED = 0x000010000,
    SHGFI_ATTR_SPECIFIED = 0x000020000,
    SHGFI_LARGEICON = 0x000000000,
    SHGFI_SMALLICON = 0x000000001,
    SHGFI_OPENICON = 0x000000002,
    SHGFI_SHELLICONSIZE = 0x000000004,
    SHGFI_PIDL = 0x000000008,
    SHGFI_USEFILEATTRIBUTES = 0x000000010
    };

    // SHGetFileInfo関数で使用する構造体
    private struct SHFILEINFO
    {
    public IntPtr hIcon;
    public IntPtr iIcon;
    public uint dwAttributes;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
    public string szDisplayName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
    public string szTypeName;
    };

    public Form1()
    {
    InitializeComponent();
    }

    public static void main()
    {
    // アイコンを取得
    SHFILEINFO shinfo = new SHFILEINFO();
    uint flg;
    flg = (uint)(shfileflg.SHGFI_ICON | shfileflg.SHGFI_LARGEICON);
    IntPtr hSuccess = SHGetFileInfo("c:\\test.log",
    0,
    ref shinfo,
    (uint)Marshal.SizeOf(shinfo),
    flg);
    if (hSuccess != IntPtr.Zero)
    {
    Icon appIcon = Icon.FromHandle(shinfo.hIcon);
    imageList1.Images.Add(appIcon);
    listView1.LargeImageList = imageList1;
    }
    }
    }
    }
親記事 /過去ログ59より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

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

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

パスワード/

- Child Tree -