//★ Edit Object Class
class Edit
{
string file_name;
byte[] byt = new byte[256];
int leng;
int pos;
string str = "";
|
public Edit()
{
pos = 0;
}
|
// OpenFileDialog で入力ファイルを選択
public void OpenFile()
{
OpenFileDialog opendlg = new OpenFileDialog();
opendlg.Filter = "ファイル|*.txt;*.html;*.htm;*.dat;*.cs;*.c|すべてのファイル (*.*)|*.*";
if (opendlg.ShowDialog() == DialogResult.OK)
{
// 選択ファイルを設定
file_name = opendlg.FileName;
pos = 0;
if (!File.Exists(file_name)) //ファイルの有無をチェック
{
MessageBox.Show(file_name, "Input File Error");
return;
}
GetFile();
}
}
// ファイルを入力
public void GetFile()
{
FileStream reader = File.Open(file_name, FileMode.Open);
reader.Position = pos;
leng = reader.Read(byt, 0, 256);
reader.Close();
}
|
// 次のレコードを入力
public void NextPage()
{
pos += 256;
GetFile();
}
// 前のレコードを入力
public void PreviousPage()
{
if (pos >= 256)
{
pos -= 256;
GetFile();
}
}
|
// string にレコードを編集
public string View()
{
int i,j,k;
byte[] wt = new byte[16];
str = "";
for(i=0; i<leng; i+=16)
{ j = leng-i;
if (j > 16) j = 16;
for (k = 0; k < 16; k++) wt[k] = 0;
for (k = 0; k < j; k++) wt[k] = byt[i + k];
// オフセット
k = (pos+i) / 2;
str += k.ToString("X4");
str += ": ";
// 16進
for(k=0; k<j; k++)
{ str+= wt[k].ToString("X2");
if (k % 4 == 3) str += " ";
}
for (; k < 16; k++)
{ str += " ";
if (k % 4 == 3) str += " ";
}
// 文字
str+= " ";
for(k=0; k<j/2; k++)
{ if ((wt[k*2]==0x0D && wt[k*2+1]==0) ||
(wt[k*2]==0x0A && wt[k*2+1]==0))
str+= ".";
else
str+= (char)(wt[k*2] + (wt[k*2+1]<<8));
}
str+= " ";
str+= "\r\n";
}
return str;
}
}
|
//★ Main() form01 Class
class form01
{
[STAThread]
public static void Main()
{
MyForm mf = new MyForm();
Application.Run(mf);
}
}
|
public class MyForm : Form
{
・・・
Edit edit = new Edit(); // Edit Object Class の定義
public MyForm()
{
InitializeComponent();
edit.OpenFile();
Paint += new PaintEventHandler(MyHandler);
}
|
private void MyHandler(object sender, PaintEventArgs e)
{
textBox1.Text = edit.View();
}
|
private void FileOpen(object sender, EventArgs e)
{
edit.OpenFile();
Invalidate();
}
|
private void NextPage(object sender, EventArgs e)
{
edit.NextPage();
Invalidate();
}
private void PreviousPage(object sender, EventArgs e)
{
edit.PreviousPage();
Invalidate();
}
|
![]()
[Next Chapter ↓] utf-16, utf-8
[Previous Chapter ↑] メニューを処理する