初歩的

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 初歩的

by 雷電 » 2006年3月11日(土) 18:33

言い忘れてました。

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

by RAIDEN

by 雷電 » 2006年3月11日(土) 18:32

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

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

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

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

by 7 » 2006年3月11日(土) 15:29

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

by 雷電 » 2006年3月11日(土) 15:20

言われたように直してみました。
名前をつけて保存、開くのところに、ファイルパスのコードを書きました。
次はどうすればいいのですか?
何度も聞くようですが・・・・。

Re: おはようございます

by 7 » 2006年3月11日(土) 14:50

>

コード: 全て選択

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
普通の変数の場合、宣言した変数名に代入するだけですみますが、構造体の場合、宣言した変数名以外に構造体に元から含まれる変数名を把握する必要があります。

おはようございます

by 雷電 » 2006年3月11日(土) 09:42

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

コード: 全て選択

Dim file_path As Long
file_path=lpstrFile
Debug
と、こういうことですか?

by みどるべあ » 2006年3月10日(金) 23:12

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

by 7 » 2006年3月10日(金) 22:29

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

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

コード: 全て選択

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?

by 雷電 » 2006年3月10日(金) 21:51

file_pathを入力するときは、
file_path
でいいんですよね?
もし違うのなら、手ほどきをお願いします。

by 7 » 2006年3月10日(金) 21:41

> 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()関数でメモリをゼロクリアしておく必要があります。

by 雷電 » 2006年3月10日(金) 20:33

file_pathについて、最後にたずねます。
file_pathは、どこに入力すればいいですか?
グローバルのところに記入したあと、どこに記入をすればいいですか?
お願いします。教えてください。

by ゲスト » 2006年3月10日(金) 20:25

上記のゲスト(18:03)を書き込んだ者です。

>7様
>理解しようとするのは簡単ですが、実際に理解するのは難しいことで、
>理解不能なこともあると思います。
そうですね。
私の考えが足りませんでした。


>雷電様
短慮で失礼なことを言ってしまい、大変申し訳ありません。
何事も知ってしまえば簡単ですが、知らないときは恐ろしく難しい
ということを忘れてしまっていました。
不快感を与えてしまったこと、お詫び申し上げます。





言い訳になりますが、
7様のされていること(他人のコード理解とそのデバック)は、
非常に手間のかかる面倒なこと、と私には映っています。
やり取りを見ていてその旨を言いたい気持ちを押さえられませんでした。
外野の私が口を出すことではなかったかもしれません。
失礼いたしました。

by 雷電 » 2006年3月10日(金) 19:24

追記します。
意味をわかろうとしていないわけではありません。
ただ、まだはじめたばかりなので、少し難しいだけです。
言語についても、あまり理解してませんし・・・・。

by 雷電 » 2006年3月10日(金) 19:21

7様のいってるとおり、急いでいます。
ABを始めたばかりの私には、難しすぎました。
もう少し、こちらも詳しく言っておけばよかったなと反省しております・・・。
しかし、ここで諦めるわけには行きません。こんなところまできているのだから、と思いながら、今も、プログラミングしています。
何か意見があるなら、いくらでもどうぞ。<(_ _)>

by RAIDEN

by 7 » 2006年3月10日(金) 18:32

> >7様
> もしこの書き込みで不快に思われたらスイマセン。
こういうことに返事を書いていいのか微妙ですが、不快には思いません。

理解しようとするのは簡単ですが、実際に理解するのは難しいことで、理解不能なこともあると思います。

無視してもらって構わないんですが、雷電さんは急ぎでプログラムを作ってますか?
急ぎじゃないならもっと簡単なプログラムをコツコツ作って基本的なことを身につけたらどうでしょう。
ActiveBasicで初めて試みたコードはSetWindowText(hMainWnd,"aiueo")だったと思うんですが、感動しました(笑
HSPからやって来た自分にとってシステム変数statが無いことが一番最初の難関だったなんて恥ずかしくて書けません。

ページトップ