初歩的

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
メッセージ
作成者
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#46 投稿記事 by 7 »

> file_pathは、どこに入力すればいいですか?
そうですね。ファイルを開いた時と保存した時、と書くと少し分かり辛かったかもしれません。

ファイルパスが取得できてないとファイルパスを格納できないってことは、分かりますよね?無い袖は振れませんからね。
ちなみに、○○ができてないから□□ができないんじゃないだろうか...、っていうのはデバッグで必要になる知識(思考?)です。

で、パスが取得できてないと格納できないんですから、パス取得後にグローバル変数file_pathに格納することになります。
ファイルパス取得後というのは、GetOpenFileName()関数,GetSaveFileName()関数がキャンセルされずにしっかりファイルを選択してからのことを指します。
ですから、これらの関数の処理が思惑通りに終わった後であれば結構適当な所にfile_pathを書いて構いません。

そして、何をfile_pathに格納するか、ですが、ファイルパス取得後のOPENFILENAME構造体のlpstrFileにファイルパスが格納されているので、これをグローバル変数のfile_pathに格納してやります。

今気付いたんですが、ActiveBasicのファイルを開いたり保存するサンプルありますが、その中のDim FileName[MAX_PATH-1] As Byteをグローバルにしてしまえばよさそうですね。
いちいち自分で格納する手間が省けますし。
逆にofn.lpstrFile=StrPtr(file_path)と書いてしまってもいいんですが...。
String型を指定するならあらかじめZeroString()関数でメモリをゼロクリアしておく必要があります。
雷電

#47 投稿記事 by 雷電 »

file_pathを入力するときは、
file_path
でいいんですよね?
もし違うのなら、手ほどきをお願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#48 投稿記事 by 7 »

> もし違うのなら、手ほどきをお願いします。
笑わせようとしてますか?
全っ然違いますよっ。
いくらなんでもこれは...こっちもふざけたくなります。
急がば回れとも言ってみたいんですけどねぇ...。

変数には値を格納しておくことが可能で、かなり便利です。
で、変数に値を格納(代入)するには演算子を使います。
演算子は分かりますよね?+,-,=、などなどが演算子です。
※格納、代入という言い方がややこしいかもしれませんがニュアンスの違いで意味は同じです

コード: 全て選択

Dim i As Long'LONG型変数iを宣言
	i=100'代入演算子、イコールを使う
	Debug
左辺に変数、右辺に代入したい値を指定します。
デバッグするとLONG型変数iには100が格納されているはずです。

また、左辺に変数、右辺も変数という場合も同じようなものです。

コード: 全て選択

Dim i As Long'LONG型変数iを宣言
Dim j As Long'LONG型変数jを宣言
	'代入演算子、イコールを使う
	i=100
	j=i
	Debug
デバッグするとiには100、jにも100が格納されているはずです。
変数jに変数iの内容を格納した訳です。
ただ、変数がポインタを指していたら簡単に扱えません。慣れれば問題ないんですけどね。

変数に代入する方法が分かった所で、何を代入するか。いいですか。
さっき書きましたが、OPENFILENAME構造体のlpstrFilefile_pathに代入してやります。
You copy?
みどるべあ
記事: 25
登録日時: 2005年11月13日(日) 15:25
連絡する:

#49 投稿記事 by みどるべあ »

今更思ったんだけど、プログラムって急がずにまったりデバッグしながら作るものだよね?
仕事じゃない限り。
雷電

おはようございます

#50 投稿記事 by 雷電 »

今日も、プログラムに全身系を注ぎたいと思います。
えっと、

コード: 全て選択

Dim file_path As Long
file_path=lpstrFile
Debug
と、こういうことですか?
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: おはようございます

#51 投稿記事 by 7 »

>

コード: 全て選択

Dim file_path As Long
> file_path=lpstrFile
> Debug
> と、こういうことですか?
惜しい!正しくは下のようになります。

コード: 全て選択

file_path=ofn.lpstrFile
file_pathグローバル変数として宣言してあります。エラーなど出ませんがプロシージャ内で宣言し直すのは賢いとは思いません。
Debugですが、これはデバッグ時でなければ消すかコメントアウトして構いません。

ここから下は余談です。難しいようだったら適当に読み飛ばして下さい。

構造体についてですが、構造体は色んな変数を一つにまとめた大きな変数だと自分は思っています。構造体の宣言も変数と変わりません。

コード: 全て選択

Dim i As Long'LONG型変数の宣言
Dim ofn As OPENFILENAME'OPENFILENAME型構造体の宣言
今更ですが、DimAsに挟まれたローマ字が変数名になります。必ずしもLONG型変数の変数名はiになる、OPENFILENAME型構造体の変数名はofnになる、という訳ではありません。
自分の分かりやすいように宣言して下さい。
※大勢でプログラミングするなら皆で分かりやすいものを決めましょう

ただアクセスの仕方が少し変わります。

コード: 全て選択

i=100'LONG型変数iに100を代入

'OPENFILENAME構造体のDWORD型変数lStructSizeにOPENFILENAME構造体の大きさを代入
ofn.lStructSize=SizeOf(OPENFILENAME)

'一度にOPENFILENAME構造体を弄りたい場合はWith文が便利
With ofn'構造体の変数名を指定
	.lStructSize=SizeOf(OPENFILENAME)
	.hwndOwner=hMainWnd
End With
普通の変数の場合、宣言した変数名に代入するだけですみますが、構造体の場合、宣言した変数名以外に構造体に元から含まれる変数名を把握する必要があります。
雷電

#52 投稿記事 by 雷電 »

言われたように直してみました。
名前をつけて保存、開くのところに、ファイルパスのコードを書きました。
次はどうすればいいのですか?
何度も聞くようですが・・・・。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#53 投稿記事 by 7 »

> 次はどうすればいいのですか?
次はありません。ちゃんと上書きされると思います。
雷電

#54 投稿記事 by 雷電 »

完璧です。
完全にできました。
>7様 ありがとうございました。いっていたとおり、名前を入れさせていただきます。

>ゲスト(18:03)様 厳しいお言葉でしたが、励ましになったと思います。

>M.S.様 ビットマップを少しいじればよかったわけですね。

>hira様 分岐については、また勉強して、やってみたいと思います。
雷電

#55 投稿記事 by 雷電 »

言い忘れてました。

今回の件は、どうもありがとうございました。

by RAIDEN
返信する