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 >>
■34297  Re[4]: C++のsrandについてです(超初心者です)
□投稿者/ 774RR -(2009/03/25(Wed) 14:55:30)
    解決したようなので、1つサンプルを提供しておこう。このサンプルが適切か否かはさておき。
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define ITERATION 1000000
    
    inline int func(double x, double y) { return x*x+y*y<1; }
    inline double mydrand() { return (double)rand()/((double)RAND_MAX+1); }
    
    int main() {
        int i;
        int inside_arc=0;
        srand(time(0));
        for (i=0; i<ITERATION; ++i) {
            if (func(mydrand(), mydrand())) ++inside_arc;
        }
        printf("iteration=%d, inside_arc=%d, pi=%g\n", ITERATION, inside_arc, (double)inside_arc/ITERATION*4);
        return 0;
    }
    
    mydrand() はどう動き何を返すのか(特に返す値の範囲)
    srand() に渡している seed は何なのか
    そもそもこれは何をするソースなのか
    どういう原理で何を求めているのか
    あたりまで理解できるようになればいいな
記事No.34275 のレス / END /過去ログ60より / 関連記事表示
削除チェック/

■35352  HIDデバイスのオープン
□投稿者/ SHAL -(2009/04/27(Mon) 02:00:25)

    分類:[.NET 全般] 

    環境:C#
    SetupDiGetDeviceInterfaceDetailにて取得したドライバパスを利用して
    CreateFileでHIDデバイスのオープンを試みておりますが、失敗が返ってきてしまいます。

    自分が取得したHIDデバイスのパスを調べると
    "\\\\?\\hid#vid_0461&pid_4d15#6&22309ee6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"
    このような値で格納されています。
    上記はGuidをHidD_GetHidGuidで取得してそこからひっぱてきたパスになります。

    上記のものをCreateFileの第一引数に渡しているのですが開くことができません。(-1)
    CreateFile(PATH,
    GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    0,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    IntPtr.Zero);

    パスの扱い方が違うのか、CreateFileの使い方が間違っているのか、そもそも自作でないHIDデバイスへのアタッチができないのか、要領が得ず前身することができません。
    サンプルの数も少なく、非力ながら一通り試したのですが解決に至らずこちらで質問させていただきます。

    よろしくお願いいたします。
親記事 /過去ログ61より / 関連記事表示
削除チェック/

■35353  Re[1]: HIDデバイスのオープン
□投稿者/ オショウ -(2009/04/27(Mon) 08:00:46)
    No35352 (SHAL さん) に返信
    > 自分が取得したHIDデバイスのパスを調べると
    > "\\\\?\\hid#vid_0461&pid_4d15#6&22309ee6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"

      コード自体は間違っていないような・・・
      ですが、HIDデバイスパスの文字列に間違いがあります。

      通常は、『\\.\』(C言語系では\\\\.\\)となりますが、『.』が『?』になってます。

      ご確認下さい。

    ※ 因みに、何のデバイスパスを取得して開こうとしているんですか?
      時にはそのデバイスのステータス確認をしないと無い場合開けません。

    以上。
記事No.35352 のレス /過去ログ61より / 関連記事表示
削除チェック/

■35358  Re[3]: HIDデバイスのオープン
□投稿者/ SHAL -(2009/04/27(Mon) 10:05:41)
    ご回答ありがとうございます
    目的はあえて言うと「ユーザーモードの限界を知る実験」です。
    目指す挙動は既存のWindows自体が制御をつかんでいるデバイスをCreateFile→最終的にHidP_GetButtonEXに行き着きたいと考えていました。

    774RRさんの意見をいただきこちらでもC++でも作成し、パスを確認してみたところ
    DevicePath = 0x003e3254 "\\?\hid#vid_0461&pid_4d15#6&22309ee6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"
    となっていました。
    これにCreateFileを試みるとやはり0xffffffffが返ってきました。

    PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);
    の部分をC#に移植した部分がどうも怪しくパスに疑問を持っていたのですが、安心しました。

    >>自作でない HID の場合、特にマウスやキーボードは、Windows 自体が制御をつかんでいるので
    >>フツーにやったのでは開けない(これも実験済み)。
    貴重な情報をありがとうございます。昔(98時代)会社の上司がHIDキーボードの共有について話していたのを少し覚えていたのですがどうやら過去の遺産のようですね。残念。

    >>フツーにやったのでは開けない 
    の部分が個人的にはすごく気になります。(笑)

    結論としては「開けない」のが仕様みたいなので今回は諦めたいと思います。
    今後、上記の事例を満たすプロジェクトの作成はHIDミニドライバ等でカバーするものだと認識することにします。

    ありがとうございました。

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

■35469  処理の終了を待ちたい
□投稿者/ マキナ -(2009/05/02(Sat) 00:33:10)

    分類:[C#] 

    ファイルの存在を確認して、存在する場合に処理をしたいと思います。
    ファイルが存在したらすぐに処理をしたいので、監視時間を短くしたいのですが、
    短くすると、処理には時間がかかるため、くり返し処理してしまいます。
    処理の終了を待ちたいのですが、どのようにしたらよいでしょう?

    using System;
    using System.Windows.Forms;
    using System.IO;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    bool there = false;
    public Form1()
    {
    InitializeComponent();
    timer1.Interval = 200;
    timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    if (File.Exists(@"C:\tmp.txt"))
    {
    there = true;
    if (there == true)
    {
    MessageBox.Show("there");
    System.Threading.Thread.Sleep(10000);
    there = false;
    }
    }

    }
    }
    }

    boolで処理するかどうかを判定し、処理終了後にfalseにしているつもりなのですが、
    これだと、つぎつぎとメッセージボックスが開いてしまいます。
    アドバイス乞う。
親記事 /過去ログ61より / 関連記事表示
削除チェック/

■35470  Re[1]: 処理の終了を待ちたい
□投稿者/ ぽぴ王子 -(2009/05/02(Sat) 01:35:49)
>
    No35469 (マキナ さん) に返信
    
    >                 there = true;
    >                 if (there == true)
    
    there を true にした、その直後に there が true だったならという処理が入ってますよね。
    そうなると必ずその処理を通ることになるので、タイマーが動作するたびにメッセージボックス
    を表示することになりませんか?
    
    > ファイルが存在したらすぐに処理をしたいので、監視時間を短くしたいのですが、
    > 短くすると、処理には時間がかかるため、くり返し処理してしまいます。
    > 処理の終了を待ちたいのですが、どのようにしたらよいでしょう?
    
    Thread.Sleep(10000) が時間がかかる処理のイメージでしょうか。
    その場合、Sleep している間処理が止まってしまうので、終わってからタイマー処理が起動して…
    となってしまいそうです。
    
    この場合はファイルが存在するチェック、あるいは逆に時間がかかる処理を別スレッドでやって
    しまうのがいいかもしれません。
記事No.35469 のレス /過去ログ61より / 関連記事表示
削除チェック/

■35473  Re[2]: 処理の終了を待ちたい
□投稿者/ マキナ -(2009/05/02(Sat) 02:28:03)
    ありがとうございます。
    まず、自己解決しました。
    なんのことはない。タイマーをとめればいいので、
                if (File.Exists(@"C:\tmp.txt")) {
                    timer1.Enabled = false;
                    MessageBox.Show("there");
                    System.Threading.Thread.Sleep(10000);
                    timer1.Enabled = true;
                }
    でできそうです。
    
    おっしゃるように、もともとなかったところに新しく作られることを監視しようとしています。
    FileSystemWatcherクラスを調べてみます。
    ありがとうございました。
    
記事No.35469 のレス / END /過去ログ61より / 関連記事表示
削除チェック/

■36014  配列の抜き出し
□投稿者/ にく -(2009/05/18(Mon) 15:08:51)

    分類:[VB.NET/VB2005 以降] 

    はじめまして、VB1ヶ月の初心者です
    環境:VB2005
    データ:txtdata

    複数の数値データを扱う配列操作で行き詰っております。

    1,2,3〜10000のデータを5個を抜かして、100個単位で改行して
    表示させるまたは、変数に格納できればよいのですが。

    理想:
    6〜100(改行)
    106〜200(改行)
    ・・・
    9906〜10000

    と抜き出して
    Textboxに表示させたいのですが、
    Array.CopyとかJoinとかを使って試行錯誤して
    いますが、うまくいかないのです。
    別の方法でもよいのでどなたか
    ご教授の程、宜しくお願い致します。

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

■36016  Re[1]: 配列の抜き出し
□投稿者/ やじゅ -(2009/05/18(Mon) 16:04:11)
>
    2009/05/18(Mon) 16:09:08 編集(投稿者)

    No36014 (にく さん) に返信
    > 1,2,3〜10000のデータを5個を抜かして、100個単位で改行して
    > 表示させるまたは、変数に格納できればよいのですが。
    >
    > 理想:
    > 6〜100(改行)
    > 106〜200(改行)
    > ・・・
    > 9906〜10000

    剰余演算子(余り)のMod演算子を使って
    計算結果が1〜5になるのは除去する。

      値 Mod単位
    1〜100 100 例 101 Mod 100 = 1  
    101〜200 200 例 202 Mod 200 = 2

    *→kに変換 同じ学校の課題でしょうか?
    http://hanatyan.sa*ura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=8936&page=0
記事No.36014 のレス /過去ログ62より / 関連記事表示
削除チェック/

■36015  Re[1]: 配列の抜き出し
□投稿者/ επιστημη -(2009/05/18(Mon) 15:52:12)
>
    2009/05/18(Mon) 15:52:50 編集(投稿者)

    こんなんでええのかの。
    めんどっちーのでConsoleに出力してますが、
    本番ではStringBuilderにでも食わせりゃえぇでしょう。
    C#だけどキモは通じますよね ^^;

    using System;

    class Program {
    public static void Main() {
    int N = 10000;
    int[] input = new int[N];
    // テケトーな初期化
    for ( int i = 0; i < N; ++i ) {
    input[i] = i+1;
    }

    int items_per_line = 100; // 100個で改行
    int step = 6; // 6個毎
    int count = 0; // 出力した個数

    for ( int i = 0; i+step < N; i += step ) {
    Console.Write("{0} ", input[i+step-1]); // 出力して
    if ( ++count == items_per_line ) { // たまに
    Console.WriteLine(); // 改行
    count = 0;
    }
    }
    }
    }
記事No.36014 のレス /過去ログ62より / 関連記事表示
削除チェック/

■36821  ProcessWaitingFormでのエラーメッセージ
□投稿者/ Yumi -(2009/06/05(Fri) 19:44:28)

    分類:[.NET 全般] 

    .NET初心者です。

    エラーメッセージの表示で困っています。
    該当データがなかった時に「データ出力に失敗しました」と出てしまいます 。

    DialogResult.Noneを返すのにDialogResult.Cancelを受け取ってしまいます。

    Dim iRet As Integer
    Dim processWaitingFrm As ProcessWaitingForm = New ProcessWaitingForm(Me)
    iRet = processWaitingFrm.ShowDialog
    If iRet = DialogResult.Cancel Then ⇒Cancelを受け取ってしまい・・
    MsgBox(MessageManger.GetMessage("ERR1000022", "データ出力"), MsgBoxStyle.Critical, "警告") ⇒失敗
    ElseIf iRet = DialogResult.None Then
    MsgBox(MessageManger.GetMessage("ERR0000005"), MsgBoxStyle.Critical, "警告") ⇒該当無し
    End If

    Public Overrides Sub ProcessWithWaitingForm(ByVal argWaitingForm As ProcessWaitingForm)
    If m_BusinessLogic.InsertDataOutput(1, refErr) = False Then ⇒該当データがない場合
    If refErr Then
    argWaitingForm.DialogResult = DialogResult.None  ⇒ココに入ってsubで抜ける
    Exit Sub
    End If
    argWaitingForm.DialogResult = DialogResult.Cancel
    Exit Sub
    End If

    .NET初めて使うので、あまり理解できていません。。
    どうぞよろしくお願いいたします。
親記事 /過去ログ64より / 関連記事表示
削除チェック/

■36732  動画ファイル分割について
□投稿者/ OUMI -(2009/06/04(Thu) 15:22:53)

    分類:[.NET 全般] 

    現在バイナリファイルの分割に試行錯誤しています。
    下記のコードで実装しましたが、"コーデックがサポートされていません"というエラーになり、再生することができません。
    分割についてご教授いただけないでしょうか?
    お願いします。

    Class BinarySplit
    Shared Sub Main()


    ' バイナリ・ファイルの読み込み
    Dim src() As Byte = File.ReadAllBytes("D:\Camelliamoto.avi")

    Dim FILESIZE As Integer = 1024 * 10000 ' 分割サイズ

    'Dim num As Integer = 0

    Dim remain As Integer = src.Length
    While remain > 0

    '' 作成する分割ファイルの実際のサイズ
    Dim length As Integer = remain

    '' 分割ファイルへ書き出すbyte配列の作成
    Dim dest(length - 1) As Byte
    'Array.Copy(src, num * FILESIZE, dest, 0, length)

    '' 出力ファイル名(out0001.bin、out0002.bin、……)
    Dim name As String = String.Format("D:\out.avi")

    ' byte配列のファイルへの書き込み
    File.WriteAllBytes(name, dest)

    'num += 1
    remain -= FILESIZE
    End While
    End Sub
親記事 /過去ログ64より / 関連記事表示
削除チェック/

■36749  Re[1]: 動画ファイル分割について
□投稿者/ たくボン -(2009/06/04(Thu) 18:42:48)
    No36732 (OUMI さん) に返信
    > 現在バイナリファイルの分割に試行錯誤しています。
    > 下記のコードで実装しましたが、"コーデックがサポートされていません"というエラーになり、再生することができません。
    > 分割についてご教授いただけないでしょうか?
    > お願いします。

    んー、ほんとに全部のデータを吐き出せてる?

    While remain > 0
    '・・・
    remain -= FILESIZE
    End While

    1024 * 10000の倍数じゃないファイルだったらどうなるんだろ・・・。

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

■36776  Re[2]: 動画ファイル分割について
□投稿者/ .SHO -(2009/06/05(Fri) 10:31:47)
    > 1024 * 10000の倍数じゃないファイルだったらどうなるんだろ・・・。

    しかも "D:\out.avi" にガンガン上書きしてるし・・・。
記事No.36732 のレス /過去ログ64より / 関連記事表示
削除チェック/

■36827  Re[4]: 動画ファイル分割について
□投稿者/ OUMI -(2009/06/06(Sat) 00:41:32)
    ■SHO さん) に返信
    > ちなみに、どういうふうに直したんですか?
    >
    > 分割した後再生する時には、元に戻したんですか?
    >

    直しましたのは、上書きされている部分だけなのですが、以下のように直しました。
    分割した後は元には戻さずに再生しました。
    ※が直した箇所です。

    Class BinarySplit
    Shared Sub Main()


    ' バイナリ・ファイルの読み込み
    Dim src() As Byte = File.ReadAllBytes("D:\Test.avi")

    Dim FILESIZE As Integer = 1024 * 10000 ' 分割サイズ

    Dim num As Integer = 0

    Dim remain As Integer = src.Length
    While remain > 0

    ' 作成する分割ファイルの実際のサイズ
    Dim length As Integer =Math.Min(FILESIZE, remain) ※

    ' 分割ファイルへ書き出すbyte配列の作成
    Dim dest(length - 1) As Byte
    'Array.Copy(src, num * FILESIZE, dest, 0, length)

    ' 出力ファイル名(out0001.bin、out0002.bin、……)
    Dim name As String = String.Format("D:\out" & num & ".avi")※

    ' byte配列のファイルへの書き込み
    File.WriteAllBytes(name, dest)

    num += 1
    remain -= FILESIZE
    End While
    End Sub
記事No.36732 のレス /過去ログ64より / 関連記事表示
削除チェック/

■36891  Re[9]: 動画ファイル分割について
□投稿者/ .SHO -(2009/06/09(Tue) 11:46:02)
    > んー、どうかな。
    > チャンクとかヘッダ、フレームの概念がわかればそんなに難しくはないと思うけど、VBで組むのは少し無理があるかもなぁ。
    > できないことはないけど俺ならめんどくさいからVBでは組まないかも。

    可能なのはわかるけど 1024 * 10000 バイトでぶった切って動くと思っていたことや
    同じファイルに上書きしてることにデバッグ中に気づけないレベルから
    2、3日で作れるとは思えないなぁ^^;;

    そもそも「少しだけ成功」って何だろう?
記事No.36732 のレス /過去ログ64より / 関連記事表示
削除チェック/

■36894  Re[10]: 動画ファイル分割について
□投稿者/ たくボン -(2009/06/09(Tue) 13:03:06)
    No36891 (.SHO さん) に返信
    >>んー、どうかな。
    >>チャンクとかヘッダ、フレームの概念がわかればそんなに難しくはないと思うけど、VBで組むのは少し無理があるかもなぁ。
    >>できないことはないけど俺ならめんどくさいからVBでは組まないかも。
    >
    > 可能なのはわかるけど 1024 * 10000 バイトでぶった切って動くと思っていたことや
    > 同じファイルに上書きしてることにデバッグ中に気づけないレベルから
    > 2、3日で作れるとは思えないなぁ^^;;
    >
    > そもそも「少しだけ成功」って何だろう?

    うーん、少し進歩したって考えてみればいいんじゃないかな。
    みんな一気にスキル上がる訳じゃないし。上がるスピードも十人十色。
記事No.36732 のレス /過去ログ64より / 関連記事表示
削除チェック/

■37297  Re[10]: C# 大量データのファイル出力でのメモリ使用量について
□投稿者/ poro -(2009/06/16(Tue) 18:54:17)
    試しに、
    以下のようにしてもメモリは増加していってしまします。
    
    
           public void AddCsvDataToEOF(DataRow row)
            {
    
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < row.ItemArray.Length; i++)
                {
                    sb.Append(row[i]).Append(",");
                }
    
                string str = sb.ToString();
                sw.WriteLine(str.Substring(0, str.Length - 1));
                sw.Flush();
    
                count++;
                if (count % 10000 == 0)
                {
    
                    sw.Flush();
                    sw.Dispose();
                    GC.Collect();
                    Encoding enc = Encoding.GetEncoding("Shift_JIS");
                    sw = new StreamWriter(outputFilePath, true, enc);
                    sw.AutoFlush = true;
    
                }
    
            }
記事No.37282 のレス /過去ログ64より / 関連記事表示
削除チェック/

■38742  Re[2]: DELL デスク DIMENSION 3100C メモリ増設
□投稿者/ tkana3 -(2009/07/24(Fri) 08:35:23)
    No38741 (猫田 さん) に返信

    >επιστημη
    >よぉわからんのなら今入ってるメモリ引っこ抜いて

    確かにその通りです。
    ですが、店舗(ヨドバシなどいきます)に行くと値段が高いように思うのです。

    >猫田さん

    ありがとうございます。1000円〜10000円まで幅広いですね。1000円手大丈夫なのでしょうか。


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

■38743  Re[3]: DELL デスク DIMENSION 3100C メモリ増設
□投稿者/ 倉田 有大 -(2009/07/24(Fri) 08:47:20)
    > >猫田さん
    >
    > ありがとうございます。1000円〜10000円まで幅広いですね。1000円手大丈夫なのでしょうか。

    とりあえずメモリーは不良にあたる可能性もあるので、できたら足が運べる店で買うのがベスト
    後、購入後、すぐにメモリーにエラーがないかメモリーチェックしてください。
記事No.38735 のレス /過去ログ66より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

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

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

パスワード/

- Child Tree -