Memo Read File

0  2  Memo2  100331:190622
★Memo2 Application の説明です

1  3  data file  2010/03/31:2019/06/22
utf_8 で書かれた Text 形式のファイルで、Text Editor で確認することが出来ます。
BOM 付きなので shift-jis として読み込んでも文字化けしません。

Memo2 アプリのデーターファイルを入力して ArrayList に格納します。

前田稔の超初心者のプログラム入門

memo2 File

  1. memo2.mem は Memo2 アプリで使用する utf-8 で書かれた Text 形式のデータファイルで、Text Editor で確認することが出来ます。
    BOM 付きなので shift-jis として読み込んでも文字化けしません。
  2. memo2 アプリのデータファイルの例です。
    @@Memo2:100331:190622
    ★Memo2 Application の説明です
    
    @@@data file:2010/03/31:2019/06/22
    utf_8 で書かれた Text 形式のファイルで、Text Editor で確認することが出来ます。
    BOM 付きなので shift-jis として読み込んでも文字化けしません。
    
    @@@Program:151008:190622
    ★Windows10 & Visual Studio 2005 で開発します。
    
    @@@@Tree View:131027:190622
    Tree View を利用して階層構造でデータを管理します。
    連続する @ が階層のレベルで、二個続く @ が最上位のレベルで連続する @ を記録することは出来ません。
    
    @@@@RichTextBox:151011:190622
    RichTextBox を利用してデータの作成/編集を行います。
    
    @@Memo:151011:190622
    ★初代 Memo アプリは WindowsC++ で作成していました。
    
    @@@data:151021:190622
    Text Code が Shift-jis から utf_8 に代わってきたこともあり、
    改めて C# で開発することにします。
    
    @@@互換:151021:190622
    初代 Memo アプリのデータを Memo2 で入力することが出来ます。
    Memo2 で保存すると変換され、初代 Memo で入力することが出来なくなります。
    
    @@ごみ箱:100331:190622
    ごみ箱
    
    @@@Delete:2015/10/08:2019/06/22
    ごみ箱の中です。
    c:\data\test\ffx2s.jpg
     "C:/HTML/PUBLIC/CS/AnimeBijin.htm"
    "c:\data\memo\hpmemo.mem"
    

プログラムの説明

  1. データを切り分けて ArrayList に格納するプログラムです。
    t_ で始まる領域は ArrayList です。
    名前 ITEM 説明
    t_lev レベル Tree View のレベルです(@ の数)
    t_ttl Title @ に続く NODE のタイトルです
    t_ymd 日付 項目が作成された日付と更新された日付です
    t_txt 本文 RichTextBox に表示する Text の本文です
    これ以外に選択された node の index を検索するために t_node を使用します。
        ArrayList t_node = new ArrayList(); // TreeView node
    
  2. "C:\\TMP\\test2.mem" がテスト用の Memo ファイルです。
    初代 Memo ファイルが入力されたときは、新しい形式にコンバート(FFFF ⇒ @@)します。
    レベル, Title, 日付, 本文を切り分けて ArrayList に格納します。
    Debug() は切り分けた ArrayList を確認するための関数です。
    /*★ Memo File の入力   前田 稔 ★*/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO;    // for File, StreamReader
    using System.Text;  // for Encoding
    using System.Collections;   //ArrayList
    
    public class MyForm : Form
    {
        static ArrayList t_lev = new ArrayList();   // Level
        static ArrayList t_ttl = new ArrayList();   // Title
        static ArrayList t_ymd = new ArrayList();   // YYMMDD
        static ArrayList t_txt = new ArrayList();   // Text Data
    
        public MyForm()
        {
            ReadFile("C:\\TMP\\test2.mem");
        }
        static void Debug(int n)
        {
            Console.WriteLine("{0}  {1}  {2}  {3}\n{4}",
            n, t_lev[n], t_ttl[n], t_ymd[n], t_txt[n]);
        }
        static void ReadFile(string file)
        {
            StreamReader reader;
            string  str;
            int     pt, wk;
    
            reader = new StreamReader(file, Encoding.GetEncoding("Shift_JIS"));
            str = reader.ReadToEnd();
            reader.Close();
            if (str[0]!='@')    str = str.Replace("", "@");
            pt = str.IndexOf("@@");
            if (pt<0)
            {   MessageBox.Show("memo file ではありません","Error");
                return;
            }
            for (pt = 0; pt < str.Length; )
            {
                pt = str.IndexOf("@@", pt);
                if (pt < 0) break;
                for(wk=pt; str[pt]=='@'; pt++);
                T_lev.Add(pt-wk);
                for(wk=pt; str[pt]!=':'; pt++);
                T_ttl.Add(str.Substring(wk,pt-wk));
                pt++;
                for(wk=pt; str[pt]!='\n'; pt++);
                T_ymd.Add(str.Substring(wk,pt-wk));
                pt++;
                wk = pt;
                pt = str.IndexOf("@@", wk);
                if (pt < 0) pt = str.Length;
                T_txt.Add(str.Substring(wk,pt-wk));
            }
            Debug(0);
            Debug(1);
        }
    }
    
    class form01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    

[Next Chapter ↓] Memo Layout
[Previous Chapter ↑] Memo Guide

超初心者のプログラム入門(C# Frame Work)