ページ 1 / 1
VB6についての質問です。
Posted: 2009年7月14日(火) 17:01
by nokty
2度目のお世話になります。
早速ですが質問です。
VB6の勉強過程で、C言語のコードをVBに換えて練習をしようとしたところ
いきなり詰まってしまいました。
C言語では
#include <stdio.h>
int main (void) {
int i, j, ln;
printf("何段ですか:");
scanf("%d", &ln);
for ( i = 1; i <= ln; i++) {
for ( j = 1; j <= i; j++)
putchar('*');
putchar('\n');
}
return (0);
}
というもので、例えば5を入力すると
*
**
***
****
*****
この結果が返ってきます。
これをVBに換える際自分の構想としては
Private Sub Command1_Click()
Dim gyousuu As Long
Dim haba As Long
For gyousuu = 1 To Text1.Text
For haba = 1 To gyousuu
MsgBox "*"
Next
MsgBox "vbCrLf"
Next
End Sub
という形にしたのですが、目も当てられない結果が返ってきました。
・VBにおいてCのprintfにあたるものが分からない。
・putchar('\n')のように改行を単体で出せるコードが分からない。
この2点が欠けていることで正常に機能させれないかと思うのですが、
どうすればよいのでしょうか。
自分なりに調べはしたのですが答えが見つかりません。
また、ほかにもまずい点があれば指摘していただけると参考になります。
VBは勉強を始めて2日目なので、少し砕いた表現が有難いです。
よろしくお願いします。
Re:VB6についての質問です。
Posted: 2009年7月14日(火) 17:19
by Blue
VB6でコンソールアプリケーションを作成することを想定しましますか?
Formにテキストボックスを置いて、ボタンを押して表示ということであれば、
テキストボックスのTextプロパティに代入するだけです。
改行は
\r\n → vbCrLf
\r → vbCr
\n → vbLf
です。テキストボックスに表示するときはたいてい vbCrLf を使います。
(C言語のWindwosアプリでもそうですし)
Re:VB6についての質問です。
Posted: 2009年7月14日(火) 17:23
by やそ
改行は
chr(13) + chr(10)
を文字列のお尻にくっつけてあげればいいです。
msgboxで表示できませんでしたか?
Re:VB6についての質問です。
Posted: 2009年7月14日(火) 17:45
by nokty
>Blueさん
ありがとうございます。
すいません
TextBoxで読み込んだものをCommandClickで表示させる、
という説明が抜けていて手間をおかけしました。
理想としてはmsgboxに
*
**
***
****
*****
の状態で表示されるようにしたいのですが、
初期的な範囲でない技術を使うものは避けたいです。
テキストボックスのプロパティに代入ということですが、
どの部分をどの項目に代入するのでしょうか
無知すぎて申し訳ないです。
>やそさん
ありがとうございます。
改行はうまくいくようになったと思うのですが、
msgboxでは*が1個のwindowを*の個数分開くだけで本当にうまくいっているのかは怪しいです。
助言ありがとうございます。
向こう数日間ネットからかけ離れた新人研修に飛ばされるので次回のチェックが遅くなると思います。
必ず来週中には見に来ますので助言の方お願いします。
では失礼します。
Re:VB6についての質問です。
Posted: 2009年7月14日(火) 17:55
by Blue
MsgBoxにであれば一時変数にため込んだものを表示するだけですね。
Private Sub Command1_Click()
Dim row As Long
Dim width As Long
Dim triangle As String
For row = 1 To Val(Text1.Text)
For width = 1 To row
triangle = triangle + "*"
Next
triangle = triangle + vbCrLf
Next
MsgBox triangle
End Sub
Re:VB6についての質問です。
Posted: 2009年7月14日(火) 18:05
by バグ
VB6.0の勉強用によさげなHPを見つけたので、貼っておきますね。
ttp://f6.aaa.livedoor.jp/~pgisland/vbbegin.htm
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 09:53
by nokty
>Blueさん
ありがとうございます。
Blueさんのコードで実行してみたところ、望んでいた通りの動作となりました。
しかし、
triangle = triangle + vbCrLf
の意図するところがよく分かりません。
*出力 改行 **出力 改行 ***出力 改行
という流れではなく、
*出力 改行 **出力 改行改行 ***出力 改行改行改行
という動作をしているという理解で合っているでしょうか?
しかし、そうでしたら改行が増えていくのでスキマが広がっていきそうに思いますが、
実際にはきれいに出力されています。
この部分の説明をしていただけるとありがたいです。
よろしくお願いします
>バグさん
ありがとうございます。
どのサイトが分かりやすいか、VB入門サイトをあさりつつ、
メインとするものを決めていた最中だったので非常に助かりました。
助言頂いているのに欲を出して申し訳ないのですが、
VBのきれいなコードが載っているサイト、もしくは書籍などご存じないでしょうか。
もしくはプログラミングデザインのようなものを探しているのですが、
VBに関しては、やはりCやjavaほどの情報量がないので
どうしてもほしいものを見つけるのが難しいです。
よろしくお願いします。
新人研修で見ることができないかと思いましたが、今日の昼までは大丈夫でした。
とりあえずは、何がまずかったのか、どうすればよいのか、
が分かったのでスッキリして研修に取り組むことができます。
ありがとうございました。
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 10:00
by ねこ
FOR文が2個入れ子になっている事に注意してみてください。
例えば3個表示する場合だと「triangle」変数は以下のように変わっていきます
1.*
2.*(改行)
3.*(改行)*
4.*(改行)**
5.*(改行)**(改行)
6.*(改行)**(改行)*
7.*(改行)**(改行)**
8.*(改行)**(改行)***
9.*(改行)**(改行)***(改行)
これをダイアログで表示すると以下---の範囲のように表示されます。
--------
*
**
***
--------
1,3,4,6,7,8は入れ子の2個目のForの中で加算され
2,5,9はその下の加算処理で計算されています。
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 10:05
by Blue
VBでもステップ実行ができますので、イミディエイトウィンドやローカルウィンドウを使って
triangleの中身がどのようになっているのか確認してみてはどうでしょうか?
F9 を押すとブレイクポイントを置けるので、
>Private Sub Command1_Click()
にカーソルを持って行き、F9
次にF5を押すと、いつもと同じようにFormが表示されます。
TextBox1に適当な値を入れてボタンを押すと、表示がコードの画面に移ります。
先ほどブレイクポイントを置いたところに→で黄色くなるので、
そこでF8でステップ実行できます。
あとは下にあるローカルウインドウを見ていると値がどのように変化しているのか
確認できます。
ちなみに、今の時代にVB6の参考書が(普通の書店に)あるかは微妙です。
VB6が発売されたのはおよそ10年前ですので。
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 10:38
by バグ
私がVC++6.0の勉強をする際に非常に助かった書籍と同じ著者のものです。
中身を確認した訳ではありませんが、おそらく分かり易いんじゃないかな?
ビギナー編のほかにシニア編というのもあるようです。
安いので、この際、両方そろえてもいいのではないかと思われます。
ttp://www.amazon.co.jp/%E6%96%B0Visual-Basic%E5%85%A5%E9%96%80-%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E7%B7%A8%E2%80%95Ver-6-0%E5%AF%BE%E5%BF%9C%E7%89%88-Visual-Basic%E5%AE%9F%E7%94%A8%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4797307595/ref=sr_1_15?ie=UTF8&s=books&qid=1247621308&sr=1-15
>>Blueさん
うちの近所の書店だけかもしれませんが、最近VB6.0の参考書が妙に充実してるんですよ。
数ヶ月前には全く無かったはずなのに、先日覗いてみるとVBのコーナーにVB6.0の書籍がわんさかと補充されておりました。「注文間違えたんじゃねーのか?」と思ったのは言うまでもありません(笑)
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 11:33
by nokty
>ねこさん
ありがとうございます。
言われて気がつきました。
入れ子になっているfor内のtriangleと、
親のforのtriangleを別物だと思っていました。
図を見て一発でした。
>Blueさん
ありがとうございます。
VBのこの機能はすばらしく便利ですね。
今までこういうものがなかったので、詰まったときにこの機能を使うっていう発想ができませんでした。
VB6.0をインストールしている最中に
「今からVB6をインストールして勉強始めようって人は世界で君一人かもしれん」
と先輩に言われました。
確かに、入門サイトも2001年で更新終了だとかをよく見かけますね…
>バグさん
ありがとうございます。
中古だとかなりの安値になるので、とりあえず揃えておこうと思います。
需要は限りなく低そうですが、
未だにVB使っている人には…?
無理ですね。
その店が心配です。
何から何までありがとうございました。
これをもって解決とさせて頂きます。
Re:VB6についての質問です。
Posted: 2009年7月15日(水) 11:36
by nokty
すいません
解決させるのと編集パスワードを忘れたので
連投になりますがこの記事を解決に使わせていただきます。