my Hobby Life is Going On

趣味に没頭する毎日の記録

C#

タッチタイピング アプリケーション

C#

タッチタイピング練習用アプリケーションの自作に取り掛かった。 外観と基本的な構造はいろいろ試行錯誤しながらも何とかできた。Timer を使うのが初めてだったので最初戸惑ったがなんとか使えるようになった。 あとは問題を乱数を使って作るのと、難易度を…

アプリケーションの設定について

C#

Application Settings を試してみた。 config という拡張子を持った XML ファイルに構成が書き出され、起動時に読み込まれるという。昨日、インターネットを徘徊していて偶然見つけたサイトの記事によると、かなり簡単に実装できるらしい。 結果は思わしくな…

タイピング

C#

PC を使い出したのは DOS5.0、Windows3.0 の時代なので、僕の PC 暦ももうすぐ 20 年になろうとしている。なのに、未だにタッチタイピングができないというのはいかがなものか。指が動かないわけでもなく、ちゃんと左右の全ての指を使って基本通りに打てるの…

オブジェクト指向なのか?

C#

新 PC 移行に伴い、Project も新規に立ち上げなおしたが、仕様に変更はないので、古いコードを見直しながら新しいコードを書いている。プロパティやメソッドの名称にはほとんど変更はないが、中身は 50%位違うものになっている。 方針は、すっきりしたコー…

オブジェクト指向

C#

知識としては、オブジェクト指向言語の要が「カプセル化」、「継承」、「多態性」であることを知っている。ただ知っているというだけで、どうも理解が浅いことに今頃になって気付いた。「無知の知」とは少し意味合いが違うが、気付いただけでもよしとしよう…

プロジェクト再始動

C#

無事に新 PC が稼動しだしたので、滞っていた StoryWriter プロジェクトの再始動である。といきたいところだが、先月末ぐらいからまともに Visual C# を触っていなかったので、いろいろなことが忘れ去られており、それを思い出す作業から行なわなくてはなら…

リンクの網

C#

表示とデータ、そして操作のために 3 つのクラスを作ってある。それらが情報をやり取りするために各々の参照を持っている。便利なようにと思ってやったことが、処理が複雑になってくるにつれ、混乱の元になってきた。もう一度整理しなければなるまい。 あと…

仮想関数

C#

例の「StoryWriter Project」は作ったり壊したりされながらも少しずつ洗練されたものになってきているようだ。と自分で言ってもしょうがないのだけれども……。 さて、ついに仮想関数を自分で作ったクラスに実装した。呼び出される関数がインスタンスによって…

設計図

C#

昨日、新しいクラスを作っているときに思った、というか思い浮かんだのは次のようなことである。 少年時代、私は厚紙や板切れで、あるいは壊れたプラモデルの部品を再利用していろいろな工作にいそしんだ。クルマだったり、ボートだったり、時には飛行機だっ…

XML 仕様

C#

XML ファイルに保存した文字列の改行コードが「CR + LF」から「LF」のみに変換されていることがわかった。保存したファイルを開いて表示させると TextBox 内だけ、改行しない。不思議に思って Debug してその部分の文字列をみてみるとそうなっていたのだ。 .…

オプション

C#

今日はオプションダイアログの実装と設定の読み書きおよびその反映についてのコーディングを行った。レジストリへの読み書きでまた問題発生。float 型の変数は直接書き込めないことが判明。レジストリは整数型、あるいは文字列しか格納できないらしい。フォ…

まとまってきた

C#

バラバラに分かれていた、いろいろのパーツを組み合わせたというか、これまでの蓄積をひとつにまとめたものが出来上がった。メインフォームの基本的な表示、垂直テキストビュー、文書構造のツリービューおよび XML ファイルへの保存、テキストの印刷、等々。…

久しぶりに

C#

今日は久しぶりに思いっきり PC に向かってキーボードを打った。かといって進展があったという訳ではなく、先日作った仕様書に基づいて、洗練された(ほんとうか?)コードに書き直していただけなのだが…… Visual C# のエディタの癖にも慣れてきたので、ずい…

仕様書作成

C#

ずっとコーディングをしているとだんだん変数やメソッドの名前が混乱してくる。とくに毎日コーディングしているときはまだいいにしても、数日、時間があくと忘れてしまう。自分なりに規約を作ってそれに合わせて名前決めをしていても、同じ名前が必要になっ…

一応読み終わったが

C#

先日購入した「プログラミング C#」は一応全部目を通した。最初のほうは詳しくきちんと読んだが、後のほうは難解な内容になったせいもあるが、力尽きて流し読みになってしまった。それでも、「あぁそうだったのか」と納得したり、感心したりすることが多々あ…

ユーザインターフェース

C#

ユーザインターフェースとしてツリービューはなぜだか以前から好きである。階層構造をみごとに視覚的に実現していることもあるが、VisualC++ あたりから慣れ親しんで憧れがあるのかもしれない。 ともあれ、TreeView の実装は着実に進んでいる。まぁ、泥臭い…

何とかかんとか

C#

結局のところ、データ保存用のXMLSerializerに対応したクラス、表示用のTreeNode から派生させたクラスをつくり、それらをリンクさせるための補助メソッドを MainForm 内につくって何とか目処がついた。いろいろ学習しながらの作業だったので少々疲れた感が…

結局のところ

C#

昨夜、XMLSerializer 適応のデータ保存用クラスを作って、XML ファイルを書き出せるかどうかテストした。万全だと思って試した 1 回目がエラーになり途方に暮れそうになったが、初歩的な変数の初期化忘れが原因だとわかり、ホッと胸を撫で下ろした。 とりあ…

Serialize は思ったより難しい

C#

XMLSerializer クラスを試してみる。TreeNode はコンパイルエラーにはならないが実行時に例外になってしまった。ならば、Serialize を使おうかとも思ったが、調べてみると、なんだかややこしくて僕のスキルを超えている気がした。さて、どうしたものか……やは…

TreeNode について

C#

TreeView のノードは TreeNode の派生クラスでもかまわないことが判明。また、TreeNode はシリアライズ可能ということも判明したため、検討事項が一気に解決しそうな気配となった。今夜までに表示関係の主な部分の実装は整ったので、細かい部分はぼちぼち進…

データと表示のリンク

C#

文書構造のデータとそれを表示する TreeView のデザインは決まったものの、その 2 つをリンクするのが難しい。データが所謂、階層構造を持っているため視覚的に TreeView で表現すること事態は的を射ているのだが、データの階層と表示の階層が微妙に違う部分…

Visual C# 2010

C#

さて、懸案の Visual C# のバージョンアップである。仕事の合間に調べてみると2008 と 2010 は共存できることが判明した。そこで帰宅後すぐにインストールしてみた。ディスクの空き領域が 2.5GB も必要とのこと。時間がかかるだろうと予想したら、案の定 1 …

バージョンアップはどうしよう??

C#

Visual C# がバージョンアップしたので、インストールしようかと思っている。その前に OS そのものをインストールし直して、レジストリをきれいにしたほうが良いのかもしれない。 昨夜、文章構造を記録するためのクラスの基本的な部分を作った。具体的な挙動…

問題解決

C#

残していた問題についてのアイデアが帰省中に浮かび、忘れないうちにと思い、帰宅後、早速コーディングした。思った通りに無事に解決。ついでにドキュメントが開いていない時のメニューとボタンの無効化処理も実装した。 あとは画面左側部分のコーディングで…

新たな困難

C#

午後から買い物に出かけ、帰ってから少しコーディングをしたが、思わぬ問題にぶつかり不貞寝をしてしまった。 ドキュメントが閉じられる時に保存されていなければ、保存を促すようにする。Ver.1 では FormClosing イベントが利用できていたのに、Ver.2 では…

スキルアップ

C#

昨日深夜と本日午前中で、Ver.2 の外観が整い、縦書き表示部分、およびファイル入出力関係の実装がほぼ整った。印刷関連、コピー・ペースト関係の実装を今夜までに行う予定。 MDI ベースからタブブラウザ風の外観に変更したため、クラスの参照関係も Ver.1 …

新 Project 始動

C#

昨夜から今日にかけて、StoryWriter 2.0 の構想を練った。だいたいの仕様は決まったが、今まで MDI 任せだった Active な Form の管理の具合をもう少し調べて考察しなければなるまい。 ツールウィンドウについてだいぶ検索したが有益な情報は得られなかった…

プロジェクトは順調

C#

昨夜、印刷処理の実装が済んだ。C++ で MFC を使ってコーディングしていた時からすると、かなり楽である。エディタが便利になったせいもあろうかと思うが、定型的な処理をする分にはフレームワークがたいていのことをやってしまうようである。 Ver1.0 はこん…

進行状況

C#

今日の午前中までに完了した内容と今後の課題を整理したい。 完了した内容 表示部分のとりあえずの実装 MDI ウィンドウの状態保存と回復 ファイル入出力関係 ドキュメントの編集関連 今後の課題 印刷関連、プレビューも含めて 文章構造の編集画面作成 縦書き…

レジストリ

C#

レジストリの書き込みそのものは想定どおり、うまくいった。ただ、enum 体の値は整数値で書き込まれると思いきや、なんと文字列で書き込まれるため、読み込みのときに enum 値に cast できなくて例外が発生した。結局、書き込みのときに int に cast して解…