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

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

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

全過去ログを検索

<< 0 >>
■17473  間違えました
□投稿者/ ぜーぜーまん -(2008/04/25(Fri) 11:20:20)
    2008/04/25(Fri) 11:20:56 編集(投稿者)

    削除をおねがいします
記事No.17381 のレス /過去ログ35より / 関連記事表示
削除チェック/

■30688  ClickOnce配布アプリのFW例外設定について
□投稿者/ SCP太郎 -(2009/01/03(Sat) 00:10:00)

    分類:[.NET 全般] 

    はじめまして。いつも参考にさせて頂いております。

    開発中のC/Sアプリのクライアントのファイアウォール設定に関しまして
    私なりに調査したのですが解決できない点があります。
    皆様のお力を貸して頂きたいと思います。

     1.VB2005+SQLServer2008でC/Sアプリを作成
     2.DBへの接続・トランザクションはTableAdapter+TransactionScope
     3.ClickOnceを用いてアプリを配布

    上記条件で開発を行っています。分散トランザクションコーディネータは
    RPC(TCP:135)と(TCP:1024〜65534のランダムなポート番号)のポートを
    使用するようなのですがこのアプリを配布・使用する際にFWに関して以下の
    問題が発生します。 

     @使用するポートが不定なのでポート番号を指定してFW例外設定ができない
     AClickOnceで配布を考えているのでアプリを指定してFW例外設定ができない
      (プログラムの物理パスが不定?)

    通常このようなアプリの場合、各クライアントのFWはどのように設定
    すべきなのでしょうか?
    ランダムなポート番号部はレジストリを変更して範囲指定させることも
    可能なようですが、範囲指定したポートをすべてのクライアント
    端末で例外設定するのも現実的でない気がしますし…
    行き詰ってしまっています。

    ご助言頂ければ非常に嬉しいです。
親記事 /過去ログ54より / 関連記事表示
削除チェック/

■41864  Re[1]: VB2005でmschart使用時のエラーについて
□投稿者/ 魔界の仮面弁士 -(2009/10/01(Thu) 20:10:10)
記事No.41863 のレス /過去ログ72より / 関連記事表示
削除チェック/

■41911  Re[2]: VB2005でmschart使用時のエラーについて
□投稿者/ vol -(2009/10/03(Sat) 08:20:03)
    No41864 (魔界の仮面弁士 さん) に返信
    > 実行環境に、MSDATASRC.DLL の PIA が必要となります。
    >
    > 下記のスレッドが参考になるかもしれません。
    > http://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200909/09090018.txt

    返事が遅くなり、申し訳ありません。
    上記スレッドを拝見させて頂きました。

    う〜ん。MSDATASRC.DLL が必要なのですね…。
    魔界の仮面弁士様の見解通り、MSDATASRC.DLLを使用しない方法や配布先の限定等を
    考えるしかなさそうですね。

    現在、タイマーイベントで画素Data取得→折れ線グラフに出力しております。
    (グラフはリアルタイムに変化します)
    VB2005でMsChartを使用しないグラフの作成方法で何か良い方法は
    ありますでしょうか?
記事No.41863 のレス /過去ログ72より / 関連記事表示
削除チェック/

■51257  directfbを利用した画像処理
□投稿者/ デザパタ -(2010/06/29(Tue) 14:55:00)

    分類:[Linux/UNIX 全般] 

    directfbを利用して、Linux上で絵を描いています。
    背景画像の上に、半透明の四角形を塗り重ねて、マスク処理を行っています。

    このとき、マスクの重ねがけを行いたくないのですが、何かよい方法はないでしょうか。

    通常はマスクを塗り重ねると、不透明度が上がります。(不透明度をあげたくない)

    現在考えている方法はマスクされている領域を細かい四角形で管理し、
    描画しようとする新たなマスク(四角形)と差分をとり、マスク処理されていない箇所のみマスクするといった案です。

    できそうな予感はするのですが、大変そうです。
    もっと楽にはまた別の手段(directfbの機能で用意されているものとか)はないものでしょうか?
親記事 /過去ログ86より / 関連記事表示
削除チェック/

■60219  正規表現
□投稿者/ おお -(2011/06/23(Thu) 10:01:40)

    分類:[.NET 全般] 

    2011/06/23(Thu) 11:27:15 編集(投稿者)
    2011/06/23(Thu) 10:44:57 編集(投稿者)

    テキストファイルから正規表現で読み込みます。

    Shared a As New Regex(" ") '

    Dim collection As MatchCollection = a.Matches

    の方法で読み込みます。

    もし、テキストの行の頭に「//」があれば読込まないようにしたいです。

    どうすればいいですか?
親記事 /過去ログ101より / 関連記事表示
削除チェック/

■77169  Re[11]: 親フォームから子フォームのメソッドへアクセス
□投稿者/ ゆーきゃん -(2015/09/18(Fri) 15:57:55)
    No77150 (魔界の仮面弁士 さん) に返信
    > 2015/09/17(Thu) 11:23:17 編集(投稿者)
    
    お答え頂いていたにも関わらず、お返事が遅くなってしまい申し訳ございませんでした。
    
    > Invalidate と Refresh の違いは把握されていますか?
    > (個人的には、TextChanged した際は Invalidate の方が良いと思います)
    
    http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200909/09090024.txt
    
    魔界の仮面弁士様が解説しているページを拝見させて頂きました。
    大変わかりやすくまとめてくださっていたので、理解できました。
    このプログラムですと、「Invalidate」がよさそうですね。
    
    >>fm1.x1 = int.Parse(textBox1.Text);
    > 現在の実装だと、「Text を空欄にした場合」や「非数値が入力された場合」にエラーになりませんか?
    > 
    > .Parse メソッドの代わりに .TryParse を使うことを検討してみて下さい。
    > これなら、変換できない文字列であったとしてもエラーにはなりません。
    
    
    .TryParse を使用することで、自動で判断してくれるのはありがたいですね。
    しかし、
    
    send_x1 = float.Parse(textBox1.Text); から
    send_x1 = float.TryParse(textBox1.Text); と変えたところ、
    
    「error CS1501: 引数を 1 個指定できる、メソッド 'TryParse' のオーバーロードはありません」というエラーが発生してしまいました。
    
    
    > なお、入力途中の値は使用せず、入力後の値を使用したいのであれば、
    > TextChanged イベントを使うかわりに
    > Validating / Validated イベントの利用を検討してみて下さい。
    
    入力後に値を使用したほうが、今回の場合、よさそうですね。
    
    Leave : 入力のフォーカスがコントロールを離れた場合に発生する。
    Validating : 入力値の検査。
    Validated : 入力値の検証終了後に発生する。
    
    Validated・Validating の場合、form2を表示させた際に線が表示されなくなってしまいました、textbox1~4を選択しないと線が表示されなかったので、
    今回はそのままにしてあります。
    
    
    
    > それと、数値入力専用ということであれば、TextBox の代わりに
    > NumericUpDown コントロールを使うこともできます。
    > これを使えば非数値を入力できなくなるので、
    > 上記のような変換エラーに悩まされずに済みますよ。
    > (NumericUpDown の場合は、Text プロパティではなく Value プロパティを使います)
    
    
    今回のプログラムはサンプルで作ったものなので、このままtextboxで進めようと思います。数字しか入りませんが、空欄・文字などの場合は、if分の条件付けで弾こうと思います。
    
    
    >>Form2からForm1の変数などをもらいに行くとき、
    > その考えがそもそも間違ってます。
    > 
    > 「親画面が、子画面の値を読み書きする」のは OK ですが、
    > 「子画面が、親画面の値を読みに行く」のは、基本的に NG です。
    > 
    > 「親画面側が、自身の値を子画面に渡す」とか
    > 「親画面側が、子画面側から値を受け取る」形に書き換えてみましょう。
    > 
    
    この考えを知ることができてよかったです。
    今後これを頭にプログラムを組んでいこうと思います。
    
    
    774RR様に教えて頂いた形式とは、少し変わってしまったのですがいかがでしょうか?
    
    何かお気づきの点など御座いましたらご教授願えませんでしょうか。
    
    
    以下修正したプログラムとなります。
    
    
    ● Form1
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Collections;
    using System.Drawing.Drawing2D;
    using System.Runtime.InteropServices;
    
    
    namespace test1
    {
        public partial class Form1 : Form
        {
            // Form2の宣言
            Form2 fm2;
    
            public float x1;
            public float y1;
            public float x2;
            public float y2;
    
            public Form1()
            {
                // Form2にインスタンスを作成してForm1のインスタンスを渡す
                fm2 = new Form2(this);
    
                InitializeComponent();           
            }
    
            public void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                draw(sender, e);
            }
    
            public void draw(object sender, PaintEventArgs e)
            {
                yomikomi();
                e.Graphics.DrawLine(Pens.Green, x1, y1, x2, y2);
            }
            
            public void yomikomi()
            {
                FileStream fs = new FileStream(@"c:\data\test1.dat", FileMode.Open, FileAccess.Read); // ファイルを開く
                BinaryReader br = new BinaryReader(fs); // ファイルの読み取り
    
                x1 = br.ReadSingle();  // 4バイト浮動小数点値を読み取り、4バイト進める
                y1 = br.ReadSingle(); //                     //
                x2 = br.ReadSingle(); //                     //
                y2 = br.ReadSingle(); //                     //
    
                fs.Close(); // ファイルを閉じる
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                fm2.set_textbox_form2(x1,y1,x2,y2);
    
                if (fm2.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Invalidate();
                }
            }       
    
            public void send_textbox_form2(float _send_x1, float _send_y1, float _send_x2, float _send_y2)
            {
                using (BinaryWriter w = new BinaryWriter(File.OpenWrite(@"c:\data\test1.dat"))) // ファイルの書き込み
                {
                    w.Write(_send_x1);
                    w.Write(_send_y1);
                    w.Write(_send_x2);
                    w.Write(_send_y2);
                }
    
            }
       
        }
    }
    
    
    ● Form2
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Collections;
    using System.Drawing.Drawing2D;
    using System.Runtime.InteropServices;
    
    
    namespace test1
    {
        public partial class Form2 : Form
        {
            //Form1の宣言
            Form1 fm1;
    
            public float send_x1;
            public float send_y1;
            public float send_x2;
            public float send_y2;
            
    
            public Form2(Form1 _fm1)
            {
                InitializeComponent();
    
                //Form1のインスタンスを代入
                fm1 = _fm1;
            }
    
            public void set_textbox_form2(float _x1 , float _y1, float _x2, float _y2)
            {
                textBox1.Text = _x1.ToString();
                textBox2.Text = _y1.ToString();
                textBox3.Text = _x2.ToString();
                textBox4.Text = _y2.ToString();
            }
    
            private void pictureBox2_Paint(object sender, PaintEventArgs e)
            {
                // textbox1~4の値をform1へ渡す
                fm1.send_textbox_form2(send_x1, send_y1, send_x2, send_y2);
                fm1.draw(sender, e);
            }
    
            private void button2_Click(object sender, EventArgs e)
            {          
                this.Close();
            }
    
    
    
           // private void textBox1_Validating(object sender, CancelEventArgs e) 更新かからず・・・
            
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                send_x1 = float.Parse(textBox1.Text);
                pictureBox2.Invalidate();
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
                send_y1 = float.Parse(textBox2.Text);
                pictureBox2.Invalidate();
            }
    
            private void textBox3_TextChanged(object sender, EventArgs e)
            {
                send_x2 = float.Parse(textBox3.Text);
                pictureBox2.Invalidate();
            }
    
            private void textBox4_TextChanged(object sender, EventArgs e)
            {
                 send_y2 = float.Parse(textBox4.Text);
                pictureBox2.Invalidate();
            }
    
           
        }
    }
    
    
    
    
記事No.77125 のレス /過去ログ130より / 関連記事表示
削除チェック/

■90900  NaNは何に使いますか?
□投稿者/ おばちゃん -(2019/05/12(Sun) 10:50:10)

    分類:[.NET 全般] 

    Dim x = 0 / 0
    を計算すると
    Double.NaNと値が代入されます。

    これを判定するために、
    If x = Double.NaN then
    というIf文が使えるかと思ったのですが、
    どうもこれは使えないそうです。

    代わりに、
    Double.IsNaN関数を使えば調べることができます。

    それでは一体Double.NaNという値は何のために存在しているのでしょうか?

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

■90904  Re[1]: NaNは何に使いますか?
□投稿者/ 魔界の仮面弁士 -(2019/05/12(Sun) 13:01:16)
    2019/05/12(Sun) 14:13:23 編集(投稿者)

    No90900 (おばちゃん さん) に返信
    > Dim x = 0 / 0
    > を計算すると
    > Double.NaNと値が代入されます。

    他にも、
     Dim a As Double = +1.0 / 0.0 ' = Double.PositiveInfinity
     Dim b As Double = -1.0 / 0.0 ' = Double.NegativeInfinity
     Dim c As Double = a + b
    とか
     Dim d As Double = Math.Sqrt(-2.0)
    などでも NaN 値が算出されます。



    > それでは一体Double.NaNという値は何のために存在しているのでしょうか?

    IEEE754 に記される通り、文字通りの非数「Not-a-Number」を表すものですね。
    無効な演算や、不正な処理が行われたことを表すための値としても利用されます。

    https://ja.wikipedia.org/wiki/IEEE_754
    https://ja.wikipedia.org/wiki/NaN


    計算途中で非数が含まれた場合、その後の演算結果においても、
    例外が発生されることなく NaN として伝播されるようになっています。
    NaN 値に対して加減乗除どのような演算結果を行おうとも、
    結果は NaN のままです。(このような動作を Quiet NaN と言います)

    そのため、最終的な演算結果のみを見ることで演算の失敗を判定でき、
    演算式の途中で毎回例外処理を行わなくて済むようになります。
    .NET Framework や JavaScript における NaN がこれですね。


    なお IEEE 754 においては、Quiet NaN とは別に、Signaling NaN という
    ものが定められています。(ビット列としての表現が異なる)
    Quiet NaN に対する演算は常に NaN のままとなるのに対し、
    Signaling NaN に対する演算は、即時にエラー(あるいは例外)となります。


    #If VBC_VER >= 14.0 Then
    '倍精度浮動小数点数を、ビット列(64bit幅)で表現した場合、
    ' 先頭 1 bit は「符号」を表し(0〜1)
    ' 続く 11 bit は「指数部」を表し(-1022〜1023)
    ' 残り 52 bit で「仮数部」を表しますが、
    'それら【正規化数】とは別に、下記 4 種の特殊値が存在しています。

    '====== 浮動小数点数の特殊値 ======
    '(1) 指数部と仮数部がすべて 0 の場合、【ゼロ】を意味する。
    Dim d0 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B0__00000000000__0000000000_0000000000_0000000000_0000000000_0000000000_00UL), 0)
    Dim d1 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B1__00000000000__0000000000_0000000000_0000000000_0000000000_0000000000_00UL), 0)

    '(2) 指数部がすべて 1 の場合、仮数部がすべて 0 なら【無限大】を意味する。
    Dim d2 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B0__11111111111__0000000000_0000000000_0000000000_0000000000_0000000000_00UL), 0)
    Dim d3 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B1__11111111111__0000000000_0000000000_0000000000_0000000000_0000000000_00UL), 0)

    '(3) 指数部がすべて 1 の場合、仮数部が 0 以外なら【非数】いわゆる NaN を意味する。
    Dim d4 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B0__11111111111__1111111111_1111111111_1111111111_1111111111_1111111111_11UL), 0)
    Dim d5 As Double = BitConverter.ToDouble(BitConverter.GetBytes(&B1__11111111111__1111111111_1111111111_1111111111_1111111111_1111111111_11UL), 0)

    '(4) このほか、指数部がすべて 0、仮数部が 0 以外な【非正規化数】がある。
    ' 非正規化数は、正規化数同様に有効な値として扱われるが、数値としての精度は落ちる。

    '※非数や非正規化数の場合、仮数部のいずれかの bit が 0 以外であればよいので、実際には上記以外の組み合わせも存在する。

    '====== 内容を表示してみる ======
    'ゼロ
    Console.WriteLine($"d0 = {d0}") '通常のゼロ。CType(Nothing, Double) と同義。
    Console.WriteLine($"d1 = {d1}") 'マイナスゼロ(あるいは負の無限小)。d0 = d1 とみなされるが、一部演算では異なる結果となる。
    ' Math.IEEERemainder(+1.0, 1.0) の結果は d0 と等しく
    ' Math.IEEERemainder(-1.0, 1.0) の結果は d1 と等しい。

    'ゼロ除算
    Console.WriteLine($"1.0 / d0 = {1.0 / d0}") '非ゼロをゼロで割ると、正の無限大となる。
    Console.WriteLine($"1.0 / d1 = {1.0 / d1}") '非ゼロをマイナスゼロで割ると、負の無限大となる。

    '無限大
    Console.WriteLine($"d2 = {d2}") '正の無限大
    Console.WriteLine($"d3 = {d3}") '負の無限大

    '非数値
    Console.WriteLine($"d3 = {d4}") '正符号範囲の非数値
    Console.WriteLine($"d5 = {d5}") '負符号範囲の非数値
    #End If
記事No.90900 のレス /過去ログ157より / 関連記事表示
削除チェック/

■90903  Re[1]: NaNは何に使いますか?
□投稿者/ キングダム -(2019/05/12(Sun) 11:51:23)
    No90900 (おばちゃん さん) に返信

    Double.NaNは未定義を表すためにあると思います
    未定義では算術演算が成り立たないので正当な演算ではありませんよという
    ことを伝えるのがその目的です

    Dim a As Double = Double.NaN
    Dim b As Double = 7.0
    Dim c As Double = a * b

    たとえば上記のような計算を行った場合
    NaNが計算に含まれるのでcはNaNになります
    結果がNaNになることで算術演算が成り立たない計算を行ったことがわかります
記事No.90900 のレス /過去ログ157より / 関連記事表示
削除チェック/

■90905  Re[1]: NaNは何に使いますか?
□投稿者/ 魔界の仮面弁士 -(2019/05/12(Sun) 13:54:29)
    2019/05/12(Sun) 13:58:39 編集(投稿者)

    No90900 (おばちゃん さん) に返信
    > これを判定するために、
    > If x = Double.NaN then
    > というIf文が使えるかと思ったのですが、
    > どうもこれは使えないそうです。

    Double 型どうしに対して「=」「<」「>」「<=」「>=」な比較演算を行うと、
    一方が NaN だった場合、結果は常に False になりますね。

    なので、上記を逆手にとって
     If x <> x Then
    とか
     If Not (x <= Double.PositiveInfinity) Then
    とか
     If Not (x >= Double.NegativeInfinity) Then
    のような比較式を使うことで、NaN であることを
    検査することもできるかもしれません。

    もちろん上記は無理矢理な判定なので、通常は、
     If Double.IsNaN(x) Then
    のように検査するべきですけれども。



    ただし、LINQ で Min() を求めるような場合には注意が必要です。
    下記のように、NaN が「-∞よりも小さな値」であるかのように処理されてしまうようなので。

     Dim x As Double() = {Double.NegativeInfinity, Double.NaN, Double.PositiveInfinity}
     Dim y As Double = x.Max() '+∞ になる
     Dim z As Double = x.Min() 'NaN になる(-∞ではない)


    これは CompareTo メソッドによる比較が行われる場合に、一般的には
     ' b = c の時は a = 0 になる
     ' b > c の時は a = 1 になる
     ' b < c の時は a = -1 になる
     Dim a As Integer = b.CompareTo(c)

    のような動作をとるところが、Double.NaN を対象とする場合、

     ( NaN ).CompareTo( NaN ) は 常に 0
     ( NaN ).CompareTo( NaN以外 ) は 常に 1
     ( NaN以外 ).CompareTo( NaN ) は 常に -1

    という動作になっていることに由来しています。


    Dim dic As New Dictionary(Of String, Double)()
    dic.Add("0.0", 0.0)
    dic.Add("NaN", Double.NaN)
    dic.Add("+∞", Double.PositiveInfinity)
    dic.Add("-∞", Double.NegativeInfinity)

    For Each y In dic
     For Each x In dic
      Console.WriteLine($"({x.Key}).CompareTo({y.Key}) = {x.Value.CompareTo(y.Value)}")
     Next
     Console.WriteLine()
    Next
記事No.90900 のレス /過去ログ157より / 関連記事表示
削除チェック/

■90906  Re[2]: NaNは何に使いますか?
□投稿者/ Hongliang -(2019/05/12(Sun) 18:30:52)
    1. NaNというのは計算結果として出現する
    2. 計算結果がNaNかどうかはDouble.NaNとの比較では無くDouble.IsNaNメソッドを使う必要がある
    3. ではDouble.NaNという定数の使いどころはあるのか?
    という質問のように読み取りました。

    個人的には、未初期化を表す値としてDouble型の変数の初期値にDouble.NaNを入れることがたまにあります。
    // いまならDouble?型も使えますが、性能的な問題とかDBとのやりとりの問題とかもあって。

    他には例えば、WPFではいろいろな値(Widthとか)にDouble型が使われますが、「未定義」(システムが自動的に値を算出する)を意味する値としてNaNが使用されます。
    大抵は既定値がNaNですが、後から改めてNaNに設定したい場合もあります。
記事No.90900 のレス /過去ログ157より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -