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

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

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

全過去ログを検索

<< 0 >>
■4068  素朴な疑問です
□投稿者/ 萌衣 -(2006/05/30(Tue) 16:38:50)

    分類:[C#] 


    分類:[C#] 

    ループ内で、もう一つループ処理するのは不可能ですか?
親記事 /0過去ログ4より / 関連記事表示
削除チェック/

■7847  Re[2]: error LNK2001 (eVC4.0)
□投稿者/ 774RR -(2007/09/18(Tue) 08:28:53)
    提示コードは MSDN サンプルそのままのような気がするけど ...

    WinCE で ActiveX サポートされてるんだっけ?
    ぐぐってみたけど、されてないという情報とされているという情報とあってよくわからん。
    とりあえず当該実行環境の WinCE で ActiveX が動く確証を得てから先に進むべきだな。

    で、その mangled symbol name なんだが俺の手元の VC++6/VS2005 でみつからないんだけど?
    ... @CWnd@QAEHABU_GUID@@PBDKABUtagRECT ...
    ならあるんだが、ヘッダファイルを別の開発環境 (WinCE 以外) から勝手に持ってきてるとか、
    自分で手を加えて書き換えてしまったとか、そういうことはないかな?
    ActiveX のサポートが無いからヘッダ・ライブラリとも無いのに、よそから持ってきたと推測。

    マルチポストしまくるなら、俺がこれ以上コメントすることはないし
    もう一度「場所違い」と指摘しておく。
    http://www.wince.ne.jp/
    のほうが適切と思う。
記事No.7832 のレス /過去ログ19より / 関連記事表示
削除チェック/

■12938  Re[1]: 画像保存の方法
□投稿者/ 凪瀬 -(2008/01/21(Mon) 16:31:58)
>
    No12906 (yu さん) に返信
    > javaについての質問です。
    > 動かした画像を保存したいのですが、私はjava初心者のためどうしたらいいかよくわかりません。ソースを貼り付けておきますので、解かる方はソースに保存方法を加えていただき表示していただけると非常に助かります。

    「動かした画像」というのがよくわからないのですが、プログラム上で編集したImageオブジェクトを
    ファイルに書き出したいのでしょうか?

    画像の書き出しにはImageIOクラスを用います。
    http://java.sun.com/javase/ja/6/docs/ja/api/javax/imageio/ImageIO.html

    ただし、Appletの場合はサンドボックスの制約でファイルへの書き出しには
    制限があるので注意が必要です。
記事No.12906 のレス /過去ログ28より / 関連記事表示
削除チェック/

■55166  リストボックスの途中にItemを追加する方法について
□投稿者/ ゆる -(2010/11/18(Thu) 18:16:19)

    分類:[C#] 

    リストボックスの途中に1行挿入するようなことを行いたいと考えています。
    (リストボックスは複数行選択不可とします)

    例)
    あいうえお
    かきくけこ
    たちつてと
    なにぬねの

    という内容のリストボックスにて、「たちつてと」の行を選択した状態で
    「さしすせそ」というItemを選択行に追加して、

    あいうえお
    かきくけこ
    さしすせそ
    たちつてと
    なにぬねの

    ということをしたいのです。
    (選択行の内容を更新するのではなく、挿入するイメージです。)

    Items.Addでは一番下に追加することしか出来なさそうで、
    良い方法があるようならご教示頂けると嬉しいです。

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

■75338  Re[2]: SQLServer2000→2008R2 へのデータ以降
□投稿者/ 魔界の仮面弁士 -(2015/03/16(Mon) 21:28:59)
    2015/03/16(Mon) 21:53:28 編集(投稿者)

    No75337 (魔界の仮面弁士) に追記
    >> -2257.5999999999999 ⇒ -2257.6
    >> 546.29999999999995 ⇒ 546.3
    > バージョンが違うことで、文字列化したときに異なる値に見えてしまうだけで、
    > 実際には同じ値ということはないでしょうか。

    念のために試算。

    たとえば、float(24) の範囲で、「-2257.6」の近似値をバイナリ表現してみます。
    有効桁数 24 bit の 2 進小数で表すので、近傍値はこのあたりになります。

     (a) -100011010001.100110011000 → 10進数の -2257.599609375 に相当
     (b) -100011010001.100110011001 → 10進数の -2257.599853515625 に相当
     (c) -100011010001.100110011010 → 10進数の -2257.60009765625 に相当
     (d) -100011010001.100110011011 → 10進数の -2257.600341796875 に相当
     (e) -100011010001.100110011100 → 10進数の -2257.6005859375 に相当

    ※SQL Server の内部的には、おそらく「c」のバイナリで格納されると思います。


    一方、最大精度の float(53) が使われていたと仮定すると、
    有効桁数 53bit なので、このあたりですね。
     (x) -100011010001.10011001100110011001100110011001100110010
     (y) -100011010001.10011001100110011001100110011001100110011
     (z) -100011010001.10011001100110011001100110011001100110100

    上記の 2 進小数を 10 進小数に直してみると、こうなります。

     (X) -2257.5999999999994543031789362430572509765625
     (Y) -2257.59999999999990905052982270717620849609375
     (Z) -2257.600000000000363797880709171295166015625


    今回の「-2257.5999999999999」も「-2257.6」も、
    もっとも近い値は Y の値ですから、
    実際は両値とも、同じバイナリであると言えるでしょう。


    === 以下蛇足 ===

    上記だけ見ると、X と Y は 17 桁ぐらいの精度をもっているかのようにも
    見えますが、それはたまたたま、そういう数値域にあったというだけです。

    内部的には、最大でも「53 bit 分」の有効桁数しかありません。

    「53 bit」で表せる値の範囲は、符号無し10進整数で「0〜9007199254740991」の
    範囲です。すなわち約 15.9 桁が、最大精度ということですね。

    この15桁(53bit)の数値列に対し、何桁目に小数点を打つのかという形で
    値を管理しているのが、『浮動小数点型』である float(53)型 です。

    === 蛇足ここまで ===


    もしも、10 進数表記での誤差を抑える必要があるのなら、float ではなく、
    『固定小数点型』である decimal 型を使ってみてください。
    これならば誤差が出る心配はありません。

    元データが float 型である以上、今更型を変更してみたところで、
    既存のデータの誤差を解消できるわけではありませんが、
    今後の事を考えれば、データ型を見直すことも必要かと。
記事No.75335 のレス /過去ログ126より / 関連記事表示
削除チェック/

■79373  Re[2]: FolderBrowserDialogでお聞きしたいこと
□投稿者/ らむ -(2016/03/27(Sun) 00:46:39)
>
    No79371 (Hongliang さん) に返信
    > 1点目についてですが、こちらが参考になりませんか。
    > http://jihi4541.blog.fc2.com/blog-entry-3.html

    Hongliang様

    頂いた情報を元に調べてみたところ、以下のサイトにて修正プログラムを当てたところ回復しました。
    http://www.cyphertec.co.jp/news/cymon_revision.html

    適用後に数時間使用してみてエラーが一切発生しなくなりましたので、おそらく完治したようです。
    本当にありがとうございました。
記事No.79370 のレス /過去ログ134より / 関連記事表示
削除チェック/

■90071  Re[3]: ユーザーコントロールの使い方
□投稿者/ 魔界の仮面弁士 -(2019/02/04(Mon) 13:47:10)
    2019/02/04(Mon) 14:32:50 編集(投稿者)

    No90070 (ルパン さん) に返信
    >   pnlSub.Controls.Remove(pnlSub.Controls[0]);
    >   pnlSub.Controls[0].Dispose();

    そのコードは正しくありません。
    1 行目が指している [0] と 2 行目が指している [0] が
    別のコントロールを指していることに注意してください。


    提示のコードだと、pnlSub 上の子コントロールが【奇数個】の場合に
    最後の 1 個が Remove されないことになってしまいます。
    ※例外:ArgumentOutOfRangeException

    また、【偶数個】であった場合、一見するとすべて Remove されるように
    見えますが、実際には偶数・奇数いずれの場合にも、
    「半数は Remove しただけ(Dispose していない)」
    「半数は Dispose しただけ(自動的に Remove される)」
    という動作に陥っていることに注意してください。



    代案1:削除対象のコレクションと列挙用のコレクションを分ける

    Control[] children = pnlSub.Controls.OfType<Control>().ToArray();
    foreach (Control c in children)
    {
     pnlSub.Controls.Remove(c);
     c.Dispose();
    }


    代案2:子アイテムを変数等に保持しておき、コレクションから除去後に破棄する
    while (pnlSub.Controls.Count > 0)
    {
     using (pnlSub.Controls[0])
     {
      pnlSub.Controls.RemoveAt(0);
     }
    }


    代案3:後ろから前に Dispose する
    for (int i = pnlSub.Controls.Count - 1; i >= 0; i--)
    {
     // Dispose されると自動的に Remove される
     pnlSub.Controls[i].Dispose();
    }



    > ネットで調べたら 「UserControl の後処理は Dispose で行う」とあったので、

    親コントロールが破棄される際には、それに先んじて
    子コントロールが破棄されますので、Disposed イベント中には
    他のコントロール(もちろん Label にも)アクセスすることはできません。

    故にたとえば Dispose 時には、「子コントロールそのもの」に
    アクセスするのではなく、予め保持しておいた
    「子コントロールが持っていた値」を使って処理するようにします。


    新規プロジェクトに下記を貼り、実行してフォームを閉じてみてください。


    using System.Diagnostics;
    public partial class Form1 : Form
    {
     private UserControl uc;
     public Form1()
     {
      InitializeComponent();
      Controls.Add(uc = new UC() { Dock = DockStyle.Fill });
     }
    }

    public class UC : UserControl
    {
     private Label lbl;
     private string _labelText = null;
     private string LabelText { get { return _labelText; } }
     public UC()
     {
      Controls.Add(lbl = new Label() { Text = "lbl", Dock = DockStyle.Fill });
      
      // Label が破棄された後でも Text を拾えるよう、保持しておく
      lbl.TextChanged += delegate { _labelText = lbl.Text; };
      _labelText = lbl.Text;

      //
      lbl.Disposed += delegate
      {
       Debug.WriteLine("Label.Disposed");
       Debug.WriteLine(" UserControl.Disposing = " + this.Disposing);
       Debug.WriteLine(" UserControl.IsDisposed = " + this.IsDisposed);
       Debug.WriteLine(" Label.Disposing = " + lbl.Disposing);
       Debug.WriteLine(" Label.IsDisposed = " + lbl.IsDisposed);
       Debug.WriteLine(" Label.Text = [" + lbl.Text + "]");
       Debug.WriteLine(" LabelText = [" + this.LabelText + "]");
      };
      this.Disposed += delegate
      {
       Debug.WriteLine("UserControl.Disposed");
       Debug.WriteLine(" UserControl.Disposing = " + this.Disposing);
       Debug.WriteLine(" UserControl.IsDisposed = " + this.IsDisposed);
       Debug.WriteLine(" Label.Disposing = " + lbl.Disposing);
       Debug.WriteLine(" Label.IsDisposed = " + lbl.IsDisposed);
       Debug.WriteLine(" Label.Text = [" + lbl.Text + "]");
       Debug.WriteLine(" LabelText = [" + this.LabelText + "]");
      };
     }
    }


    ---- 実行結果 ----
    Label.Disposed
     UserControl.Disposing = True
     UserControl.IsDisposed = False
     Label.Disposing = True
     Label.IsDisposed = False
     Label.Text = []
     LabelText = [lbl]
    UserControl.Disposed
     UserControl.Disposing = True
     UserControl.IsDisposed = False
     Label.Disposing = False
     Label.IsDisposed = True
     Label.Text = []
     LabelText = [lbl]
記事No.90068 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90072  Re[4]: ユーザーコントロールの使い方
□投稿者/ ルパン -(2019/02/04(Mon) 15:25:16)
    No90071 (魔界の仮面弁士 さん) に返信

    Dispose すると
    配置されているコントロールのデータは破棄されているが
    プライベートで指定している各データは消えないんということですか?
    つまり、Dispose イベント内では完全にユーザーコントロールのデータが
    破棄されているわけではないということでいいのでしょうか?
    イベントを抜けた後に完全破棄されるということですね?


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

■90074  Re[5]: ユーザーコントロールの使い方
□投稿者/ 魔界の仮面弁士 -(2019/02/04(Mon) 16:57:35)
    2019/02/04(Mon) 20:03:33 編集(投稿者)

    No90072 (ルパン さん) に返信
    > Dispose すると
    > 配置されているコントロールのデータは破棄されているが

    コントロールのデータというよりは、コントロールそのものの破棄です。

    繰り返しになりますが、Control クラスにおいては、
    Dispose された際に、Controls プロパティに登録されている
    子コントロール群も Dispose されるように設計されています。
    (子がさらに子を持っていた場合も同様に連鎖します)

    このため UserControl の Disposed 時には、子 Label が既に処分されており、
    Label の Text プロパティが "" を返してしまうわけです。


    いずれにせよ、UserControl や Form や Panel 等の Disposed イベントが
    呼ばれたときには、それらの Controls に追加されていた子孫コントロールは
    「既に処分されていて利用不可能な状態」であるものとして扱うべきです。


    たとえば No90071 でお見せした LabelText プロパティを例に挙げると、
     string LabelText { get { return this._labelText; } }
    という実装の場合には、Dispose された後でも利用できますが、もしもこれを
     string LabelText { get { return this.lbl.Text; } }
    にしていた場合は、Dispose 後にはアクセスすべきでは無いということです。

    lbl 変数(Label クラス)は IDisposable なオブジェクトですが、
    _labelText 変数(String クラス) は IDisposable なオブジェクトでは無いわけで。


    > プライベートで指定している各データは消えないんということですか?

    Dispose された場合、そのクラスが管理していた情報のうち、
    アンマネージなオブジェクトは既に破棄されている状態になります。
    一方、マネージリソースの破棄についてはオプション扱いなのでケースバイケースです。

    また、幾つかのメンバーについては、破棄後にアクセスした場合に
    ObjectDisposedException の例外になるように設計されています。
    (たとえば Handle プロパティなど)



    参考までに Text プロパティの場合、CacheText フラグの付与有無でも動作が異なります。
    Label や TextBox 等の場合、Dispose 直後は "" が返却されるようになりますが、
    Button、TabPage、ToolStripPanel 等では、Dispose 直前の値が利用されます。

    CacheText の有無でどのように変化するか、実験コードを載せておきます。
    下記を実行すると、
      FormClosing:あいうえお/かきくけこ
      Disposed:/かきくけこ
    という結果になることを確認できます。


    public partial class Form1 : Form
    {
     private Class1 label1;
     private Class2 label2;
     public Form1()
     {
      InitializeComponent();
      Controls.Add(label1 = new Class1() { Text = "あいうえお", Top = 30 });
      Controls.Add(label2 = new Class2() { Text = "かきくけこ", Top = 90 });

      this.FormClosing += delegate { System.Diagnostics.Debug.WriteLine("FormClosing:" + label1.Text + "/" + label2.Text); };
      this.Disposed += delegate { System.Diagnostics.Debug.WriteLine("Disposed:" + label1.Text + "/" + label2.Text); };
     }
     private class Class1 : Label { public Class1() { SetStyle(ControlStyles.CacheText, false); } }
     private class Class2 : Label { public Class2() { SetStyle(ControlStyles.CacheText, true); } }
    }


    > つまり、Dispose イベント内では

    「Dispose イベント」ではなく、過去形表記の
    「Disposed イベント」ですね。



    > プライベートで指定している各データは消えないんということですか?

    private か public かは関係ないですよ。
    消えるかどうかは開発者の実装次第です。IDisposable でないオブジェクトは特に。


    .NET Framework 自身が提供しているクラス(Label や UserControl) 自体が持つメンバーではなく、
    それらを継承したクラス(あるいは自作の class 等)に対して追加したメンバーについては、
    Dispose 時にそのデータを処分するかどうかも、開発者自身が決める必要があります。

    もし Dispose された時に自作したメンバーの情報も処分する必要があるのなら、
    そのコントロールの protected な『void Dispose(bool)』メソッドを
    オーバーライドする必要があります。(あるいは Disposed イベントを利用する)
記事No.90068 のレス /過去ログ155より / 関連記事表示
削除チェック/

■94821  Re[2]: インデックスが配列の境界外です。が出てしまいました。
□投稿者/ Azulean -(2020/05/21(Thu) 23:38:09)
    No94820 (エイ さん) に返信
    > インデックスが配列の境界外です。と出る場合、どのように修正したらいいんでしょうか?

    止まった時に、その「file」と「IntSelectIndexPre」にカーソルを合わせて中身を確認してください。
    おそらく、「file」の数と、「IntSelectIndexPre」の数値の関係がおかしくなっていませんか?

    そのおかしくなったのはなぜか?でソースコードを見かえしてください。


    ※今貼り付けられているコードの中であるとすれば、Button5_Click_1 が 2 回以上実行されたときに、Clear してないから、ListBox2 の中身が増え続けること。
記事No.94819 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -