いやぁ、最近自覚し始めたけど、
次はこれです っていいつつ、
2回3回後回しになること多いなw
今度こそ読み込む部分のソースをかくぞう!
てかこれ編集してると、画面の上端の、
広告の、AVキング って奴が気になって気になって仕方が無いんだが・・・
昨日クリックしたらAV撮影がテーマのエロゲーでした。
なんじゃそりゃ!(クリックしたのかよ
まずは前回のソースをば。
procedure TForm1.Open1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then
begin
exit;
end;
end;
ソースっていったり、コードっていったりしてますが、
特に分けたりしてるわけでもないです。
んで、こんなコードを書いちゃってくれYO
if not OpenDialog1.Execute then
begin
exit;
end;
FilePath:=OpenDialog1.FileName;
FS:=TFileStream.Create(FilePath,fmOpenRead);
Memo1.Clear;
//ここが読み込む処理
FS.Free;
やっぱり核の部分にはまだ触れないんじゃないか!
って感じ@w@
新しく追加されたのは4行ですね。(コメント除く
順番に見ていきましょう。
FilePath:=OpenDialog1.FileName;
ま、FilePathにOpenDialog1.FileNameを代入してるってことはわかると思います。
TOpenDialogクラスの説明によれば、
FileNameプロパティーは、さっき開かれたファイルのパスを持ってます。
これでファイルのパスがダイアログから受け取れたと。
OpenDialog君の出番はここでおしまいです。
FS:=TFileStream.Create(FilePath,fmOpenRead);
ですが、覚えているでしょうか。
クラスの実体「インスタンス」を生成して、変数にぶちこんで、
使えるようにする っていう、クラスの使い方のルール。
もしかして、このFS変数を定義してから、
FormCreateの時とかになんで初期化しないか 疑問に思った人って居ます?
TFileStreamは、Createする時=ファイルを開くとき
なんですよね。
だからファイルを使うぎりぎりまで出番は無しなのです。
そしてこのCreateには引数があります。
Create(開くファイルのパス,ファイルを開くモード);
一個目は楽勝です。
さっきDialogから受け取ったファイルパスをほーりこんであるだけです。
モードというのはなんでしょうか。
Windowsには、ファイルの開き方? にいくつか権限があって、(Linuxの方がそこんとこしっかりしてるっぽいけど
読み込み用だけとか、上書きとか、書き込みとか があるんですね。
んで、他のアプリから、「書き込みロック」とかができるらしいです。
例えば、WMPで再生中のmp3をメッセで転送しようとすると、
開けませんでした とか出ますよね?
あれは、WMPがファイルの「読み込みロック」をかけてるから、
メッセが読み込みできなくなってるわけっす。
んで、まぁ、今回は読み込むだけなんで、
fmOpenRead という、「読み込むだけ」っていう値を入れてます。
他にもあるのでヘルプからコピペ
fmCreate 指定した名前でファイルを作成する。指定した名前のファイルがすでに存在する場合は,fmOpenWrite と同じ動作を行う
fmOpenRead 読み出し用にファイルを開く
fmOpenWrite 書き込み用にファイルを開く。既存のファイルを開いた場合,古い内容は破棄される
fmOpenReadWrite ファイルを開き,内容に変更を加える。古い内容は維持される
ま、OpenReadWriteで開いちゃうのが一番簡単なんですけどねwww
これで、
「ダイアログボックスから受け取ったファイルを
読み込みモードで開いたファイルストリームクラスの実体」を入手
できたわけです。
次の行。
Memo1.Clear;
新規作成の時にも書いたけど、Memoコンポーネントのテキストを全消しします。
これをやっておかないと、
既にアルところに追加する形でファイルを開いちゃって
見るも無残
ラスト
FS.Free;
クラス.Free; で、クラスを解放します。
TFileStreamは開くときに生成するので、使い終わったら解放するもん
なんでしょう多分。
というか、解放してやらないと、
ファイルのデータをメモリーに置きっぱなしになるのでちょっとエグイです。
(もしかしたらHDDのアクセスを隠蔽してるだけでメモリーは食わないかも
(まぁ中の人の動作は追及しないためにクラスがあるわけなので
(オブジェクト指向で深く考えたら負けかな と 思っている
こ、今度こそ読み込む部分かくぞwwww
コンテンツ
最新の12件
2023-06-12
2021-02-15
2013-06-19
2012-07-14
2012-02-04
2012-01-06
2011-03-31
2010-08-26
2010-03-15
2009-10-21
2009-02-12
2008-11-18
メニュー編集
- counter: 1167
- today: 1
- yesterday: 0
- online: 1