//★ 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 ↑] メニューを処理する