1周年特別企画も終わり、久しぶりのDelphi学習記です。決してお勉強をさぼっていたわけではありません(^^;A
1周年を振り返ってみると、Space War Gameの完成&発表以降、まともに新規のプログラムを発表していないことに(今頃)気づきました。まさしく日曜ウェブサイト管理者で、日曜プログラマーの看板が泣くというもの。そこでたまにはプログラムを掲載してみようと思いましたが・・・やはりそう簡単にはいかない(^^;;;基本機能はできているんですが、公開に耐える実用的なものにするにはさすがに1日では余裕がなかったです。
さてどんなプログラムか。最初にHSPでプログラムを組んだ際も、ある本に書かれていた内容を手でやるのは面倒くさかったのでプログラムで表現したところからはじまりましたが、今回もそれでいきました。
インターネットをやっていると、次第にたまっていくのがメルマガです。実用的なものから、さらっと見てごみ箱送りになるものまで様々です。私も「窓の杜」とかはずっと残してあり、何かが必要になったとき、その中から「GREP」検索で探しだすこともよくあります。他に私の場合、統計資料的な情報を持つメルマガも講読しており、その中の記事の一部分だけをひとつのファイルにまとめたいと常々思っていました。
記事の一部分だけをひとつのファイルにまとめたいというとき、普通はコピペで対応すると思います。ところが数が多くなるととたんにじゃまくさくなります。その上過去のバックナンバーまで手を出そうとするとやる気が・・・(@_@)しかも「GREP」検索だと、該当する言葉だけしかヒットしないため、単なる単語だけではなくある程度量がある記事だと、結局探しだしてコピペで対応しなければなりません。これを何とかしようと思いました。必要は発明の母!私にはプログラムがあるではないか!Delphiの実践学習にぴったり!!
やっぱり漫然とテキストを勉強するより、目的を持って調べだすのとでは違いますね(^^;A途中で挫折しそうになりながらも、文字列の処理や関数、変数、型といった内容がある程度わかるようになりました、、、というか、型や変数をちゃんと定めておかないとまともに動きません。動かないどころか、単に「型が違います」とエラーメッセージがでて終わりです。前に進むためにはわかりにくいヘルプを解読していかねばなりません・・・ところが意外や意外、よーく見ていくと、わけのわからないような感じのヘルプの内容も、必要なことは書かれています。何かを詳しく書いた「解説」はやはり意味不明な文章なんですが、関数などの「説明」はある程度の理解があれば意味がわかります。入門書で勉強した甲斐がありました(^^
今回の目的は、ファイル内から一部分の記事を取り出すことです。たとえばこういった記事があるとします。
「☆★☆★今週の星占い 8月12日
牡羊座 明日は雨でしょう…
・・・・(記事つづき)・・・
来週の占いは8月19日号掲載予定です。」
こういう風に、どのファイルも「今週の星占い」〜「掲載予定です。」というような定型文言で始まり、終わりがあることがわかっています。そして内容は複数行にわたっています。そこで考えられるのは、始まりの文言を探し、そこから終わりの文言を探しだし、その間の文字列を取得することです。HSPでは文字列検索のためのinstrという便利な命令があったんですが、Delphiではその類の命令がなかなか見つかりません。もしかしてないんかいな?と思っていたら、ようやく見つかりました。文字列の検索でなく、文字列の位置を取得する関数(AnsiPos)、でした。さすがに途中でHSPで作ったろうかいなと思うこともありましたが、これもDelphiの勉強と思ってなんとか我慢我慢(--;)
インターネット上の各種サイトも参考にしながら、ようやく先週あたりに記事の一部分の取得部分ができた、と思いました。ところが、動かない(x_x)原因はフルパス指定をしていないという単純な事情でしたが、先週は暇な日はプログラムとにらめっこ。しかし気づく時はふと気づく感じで、フルパスいるやん!と気づいたあとはさくさくと進みました。
そんなこんなで、型の指定や関数や手続の処理など、ヘルプが予想外に役立ち、全てが書かれていない入門書ではさすがに対応できないということがよくわかった2週間でした。フォルダ内のファイルを次々開いていく、という内容は、前掲の「パーソナルプログラミング」の内容を参考にしながら作成。
いよいよ動かしてみると、ファイルを開くスピードが速い!どどど・・・という感じでファイルを開き、必要部分を拾っていきます。ちゃんとフォルダ内の1年分のファイルから、1年分の記事を拾いだし、ひとつのファイルに加工できました。おかげで手作業の、、、何倍でしょう(^^;A今まで手作業でやっていたのが馬鹿らしくなるくらい早くできるようになりました。プログラムやっててよかった〜と思う瞬間ですね。
こんな私のはじめてのDelphi実用プログラムですが、用途が結構限定的なうえ、「始めの文言」「終わりの文言」「ディレクトリパス」をプログラムを直接変更することで対応していたため、公開することができません。せめてテキストエディタとして使用に耐えるようにしようと思っていたんですが、文言などの入力ダイアログの作成だけでなく通常の検索機構やらカット&ペーストやらを実装するのに手間取ってしまいました。ということで今週の公開は無理、となってしまいました。
さて、ここまで書き進めてきて、純粋な技術的記事は難しいし、Delphiを知らない人には読んでもおもしろくない感じがしてきました(--;)ある程度技術的内容を減らしてみましたが、いかがでしょう。この企画の性質上、初心者がどういう風にプログラムを作り上げていくか、をメインにしたいところです。しかしプログラムの実際の開発は、プログラムの再利用&修正によってできあがることも多く、自分の過去のプログラム資源やヘルプの参考例を含む他人のプログラム資源を探すこと、ということが多かったりします。特にオブジェクト指向のDelphiでは、あるオブジェクトの移植が非常に簡単なため、自分で一から作るよりはるかに効率的に有効なプログラムができたりします。そのため、学習記&開発記がこれこれを探して組み立て、という感じになってしまいますね。三國志の製作が本格化すると、技術的記録だけになってしまいますね(^^;Aそうなった場合は別のネタ探さないといけませんね〜。。。
|index|
このページへのリンクはフリーです。