Assertion Failed! -8ページ目

[C#]DataGridViewのちらつき防止1

DataGridViewのちらつきを防止する


ブログを書いてお小遣い稼ぎ


DataGridViewなどのコントロールに大量のデータが含まれる場合、リストの再描画に時間がかかる(再描画が目に見える状態)ことがよくある。はず。


これを解消するためにはPictureBoxやFormなどに含まれる、DoubleBufferedのプロパティを有効にしてやればよい。


しかし、DataGridViewなどではDoubleBufferedのプロパティはProtectedなので、通常は有効にできない。


有効にするための方法1

DataGridViewから派生したコントロールを作成する。

↓のような感じ。


using System.Windows.Forms;


namespace WindowsFormsApplication1
{
  class CustomDataGridView : DataGridView
  {
    public CustomDataGridView()
      : base()
    {
      this.DoubleBuffered = true;
    }
  }
}

[ADO]SQL Server Management Studio

SQL Server Management Studio


ブログを書いてお小遣い稼ぎ


SQL Server 2005 Express Edition と SQL Server 2005 Express Edition with Advanced Services を管理するための、使いやすいグラフィカルな管理ツール(DLサイトの説明より)


上記サイトからDLし、インストール、起動すると次のような接続画面になる。



Assertion Failed!-ManagementStudio1


「サーバー名」

「サーバー名+SQL Server」のインスタンス名が初期値として入力されている。


「認証」

Windows認証とSQL Server認証の2種類があるが、推奨されるのはWindows認証。

これは、Windows認証であれば、ActiveDirectoryなど、Windowsで設定されている設定がそのまま適用されるからだとか。



接続が成功すると、Visual StudioのようなIDE画面になるので、オブジェクトエクスプローラから

適当にデータベースとテーブルを作成してみる。



Assertion Failed!-ManagementStudio2

TestDBとTestTableをつくってみた。

TestTableがもつフィールドは「TestID」と「TestName」。(画像では主キーの設定忘れた)


まぁIDEなので、直感的にさわってれば何かしらできるでしょう。

わからん人は先ずデータベースについて勉強。

[C#]Property Grid(プロパティグリッド)

プロパティグリッドを使う


ブログを書いてお小遣い稼ぎ


プロパティグリッドとは、IDEのプロパティウィンドウをアプリケーション上で使用するためのツール。


↓のような感じのアプリを作れる。



Assertion Failed!-PorpetyGrid


上記のようにボタンとプロパティグリッドを配置してみた。


プロパティグリッドのプロパティ、「SelectedObject」に配置したボタンを選択すれば、プロパティグリッド上からボタンのプロパティを変更できるようになる。


今回は既存のコントロールをプロパティグリッドに設定したが、本来であればカスタムコントロールやユーザコントロールで作成したコントロールのデバッグ用や、自分で属性を指定して、独自の設定を行うのが正しい使い方と思う。


属性の設定方法やらカスタムコントロールやらはまたそのうち。

[用語][.NET]PEファイルとは

PEファイルとは


ブログを書いてお小遣い稼ぎ



メモリ空間にそのまま読み込むことができるファイル形式のこと。


以下のような構成をしている


PEファイル

└┬ PEヘッダ

  │ ├ MS-DOSヘッダ

  │ ├ PEファイルヘッダ

  │ │ └ オプションヘッダ

  │ │   ├ 標準ヘッダ

  │ │   ├ Windows NT固有フィールド

  │ │   └ データディレクトリ

  │ └ セクションヘッダ

  └ Relational Virtual Address



[.NET]実行ファイルをダンプする

バイナリ情報をダンプする


ちょっと組込を思い出して楽しかった。


マイクロアドBTパートナーはブログやサイトに貼るだけ。お小遣いをゲットしよう!


[テスト環境]

Visual Studio 2008 StandardEdition


実行ファイルのダンプを行ってみる。

ダンプのためには、VisualStudio付属の dumpbin.exe を使用する。


先ず、ダンプする実行ファイルとして以下の簡単なソースを作成してみた。

(フォームLoad時にメッセージボックスを表示するだけ)


[テストコード]

using System;
using System.Windows.Forms;


namespace HelloWorld
{
  public partial class HelloWolrdForm : Form
  {
    public HelloWolrdForm()
    {
      InitializeComponent();
    }

    private void HelloWolrdForm_Load(object sender, EventArgs e)
    {
      MessageBox.Show("Hello World");
    }
  }
}

ダンプするために以下を実行。


「ツール」→「Visual Studio 2008 Command Prompt」


コマンドプロンプトから、上記プロジェクトのexeファイルのあるディレクトリに移動し、プロンプトから以下を実行する。


>dumpbin /headers HelloWorld.exe


得られた結果は以下のような感じ。


--------------------------------------------------------------------------------------

Dump of file HelloWorld.exe


PE signature found


File Type: EXECUTABLE IMAGE


FILE HEADER VALUES

(中略)


OPTIONAL HEADER VALUES
       10B magic # (PE32)
      8.00 linker version
      1400 size of code
       800 size of initialized data
        0 size of uninitialized data
      32AE entry point (004032AE)
      2000 base of code
      4000 base of data
     400000 image base (00400000 to 00407FFF)
      2000 section alignment

(中略)


SECTION HEADER #1
  .text name
  12B4 virtual size
  2000 virtual address (00402000 to 004032B3)
  1400 size of raw data
   200 file pointer to raw data (00000200 to 000015FF)
    0 file pointer to relocation table
    0 file pointer to line numbers

(以下略)

--------------------------------------------------------------------------------------


青字で示した部分の説明


entry point

最初の実行される命令が格納された場所


virtual address

メモリに読み込みまれる仮想アドレス


file pointer to raw data

実行ファイルのの読み込まれるアドレス


つまり、上記の情報から

(0x004032AE - 0x00402000 + 0x200) = 0x14AE


のアドレスが最初に実行される。


実際のexeファイルをバイナリエディタで開き、0x14AEのアドレスを確認すると、


FF 25 00 20 40 00


と続いていた。


上記は、アセンブリでは


jmp 0x00402000


ということらしい。


ということで、仮想アドレスの最初にジャンプするということになる。


今回のdumpbinには「/headers」オプションのほかにも多数のオプションがあるので、いろいろ試してみるべし。