VB6についての質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nokty

VB6についての質問です。

#1

投稿記事 by nokty » 16年前

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日目なので、少し砕いた表現が有難いです。
よろしくお願いします。

Blue

Re:VB6についての質問です。

#2

投稿記事 by Blue » 16年前

VB6でコンソールアプリケーションを作成することを想定しましますか?

Formにテキストボックスを置いて、ボタンを押して表示ということであれば、
テキストボックスのTextプロパティに代入するだけです。
改行は

\r\n → vbCrLf
\r → vbCr
\n → vbLf

です。テキストボックスに表示するときはたいてい vbCrLf を使います。
(C言語のWindwosアプリでもそうですし)

やそ

Re:VB6についての質問です。

#3

投稿記事 by やそ » 16年前

改行は
chr(13) + chr(10)
を文字列のお尻にくっつけてあげればいいです。

msgboxで表示できませんでしたか?

nokty

Re:VB6についての質問です。

#4

投稿記事 by nokty » 16年前

>Blueさん
ありがとうございます。
すいません
TextBoxで読み込んだものをCommandClickで表示させる、
という説明が抜けていて手間をおかけしました。

理想としてはmsgboxに
*
**
***
****
*****
の状態で表示されるようにしたいのですが、
初期的な範囲でない技術を使うものは避けたいです。

テキストボックスのプロパティに代入ということですが、
どの部分をどの項目に代入するのでしょうか
無知すぎて申し訳ないです。

>やそさん
ありがとうございます。
改行はうまくいくようになったと思うのですが、
msgboxでは*が1個のwindowを*の個数分開くだけで本当にうまくいっているのかは怪しいです。


助言ありがとうございます。
向こう数日間ネットからかけ離れた新人研修に飛ばされるので次回のチェックが遅くなると思います。
必ず来週中には見に来ますので助言の方お願いします。
では失礼します。

Blue

Re:VB6についての質問です。

#5

投稿記事 by Blue » 16年前

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についての質問です。

#6

投稿記事 by バグ » 16年前

VB6.0の勉強用によさげなHPを見つけたので、貼っておきますね。
ttp://f6.aaa.livedoor.jp/~pgisland/vbbegin.htm

nokty

Re:VB6についての質問です。

#7

投稿記事 by nokty » 16年前

>Blueさん
ありがとうございます。
Blueさんのコードで実行してみたところ、望んでいた通りの動作となりました。

しかし、
triangle = triangle + vbCrLf
の意図するところがよく分かりません。

*出力 改行 **出力 改行 ***出力 改行

という流れではなく、

*出力 改行 **出力 改行改行 ***出力 改行改行改行

という動作をしているという理解で合っているでしょうか?
しかし、そうでしたら改行が増えていくのでスキマが広がっていきそうに思いますが、
実際にはきれいに出力されています。

この部分の説明をしていただけるとありがたいです。
よろしくお願いします

>バグさん
ありがとうございます。
どのサイトが分かりやすいか、VB入門サイトをあさりつつ、
メインとするものを決めていた最中だったので非常に助かりました。

助言頂いているのに欲を出して申し訳ないのですが、
VBのきれいなコードが載っているサイト、もしくは書籍などご存じないでしょうか。
もしくはプログラミングデザインのようなものを探しているのですが、
VBに関しては、やはりCやjavaほどの情報量がないので
どうしてもほしいものを見つけるのが難しいです。
よろしくお願いします。


新人研修で見ることができないかと思いましたが、今日の昼までは大丈夫でした。
とりあえずは、何がまずかったのか、どうすればよいのか、
が分かったのでスッキリして研修に取り組むことができます。
ありがとうございました。

ねこ

Re:VB6についての質問です。

#8

投稿記事 by ねこ » 16年前

FOR文が2個入れ子になっている事に注意してみてください。
例えば3個表示する場合だと「triangle」変数は以下のように変わっていきます

1.*
2.*(改行)
3.*(改行)*
4.*(改行)**
5.*(改行)**(改行)
6.*(改行)**(改行)*
7.*(改行)**(改行)**
8.*(改行)**(改行)***
9.*(改行)**(改行)***(改行)

これをダイアログで表示すると以下---の範囲のように表示されます。
--------
*
**
***

--------

1,3,4,6,7,8は入れ子の2個目のForの中で加算され
2,5,9はその下の加算処理で計算されています。

Blue

Re:VB6についての質問です。

#9

投稿記事 by Blue » 16年前

VBでもステップ実行ができますので、イミディエイトウィンドやローカルウィンドウを使って
triangleの中身がどのようになっているのか確認してみてはどうでしょうか?

F9 を押すとブレイクポイントを置けるので、
>Private Sub Command1_Click()
にカーソルを持って行き、F9

次にF5を押すと、いつもと同じようにFormが表示されます。
TextBox1に適当な値を入れてボタンを押すと、表示がコードの画面に移ります。
先ほどブレイクポイントを置いたところに→で黄色くなるので、
そこでF8でステップ実行できます。

あとは下にあるローカルウインドウを見ていると値がどのように変化しているのか
確認できます。


ちなみに、今の時代にVB6の参考書が(普通の書店に)あるかは微妙です。
VB6が発売されたのはおよそ10年前ですので。

バグ

Re:VB6についての質問です。

#10

投稿記事 by バグ » 16年前

私が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の書籍がわんさかと補充されておりました。「注文間違えたんじゃねーのか?」と思ったのは言うまでもありません(笑)

nokty

Re:VB6についての質問です。

#11

投稿記事 by nokty » 16年前

>ねこさん
ありがとうございます。
言われて気がつきました。
入れ子になっているfor内のtriangleと、
親のforのtriangleを別物だと思っていました。
図を見て一発でした。

>Blueさん
ありがとうございます。
VBのこの機能はすばらしく便利ですね。
今までこういうものがなかったので、詰まったときにこの機能を使うっていう発想ができませんでした。

VB6.0をインストールしている最中に
「今からVB6をインストールして勉強始めようって人は世界で君一人かもしれん」
と先輩に言われました。
確かに、入門サイトも2001年で更新終了だとかをよく見かけますね…

>バグさん
ありがとうございます。
中古だとかなりの安値になるので、とりあえず揃えておこうと思います。

需要は限りなく低そうですが、
未だにVB使っている人には…?
無理ですね。
その店が心配です。


何から何までありがとうございました。
これをもって解決とさせて頂きます。

nokty

Re:VB6についての質問です。

#12

投稿記事 by nokty » 16年前

すいません
解決させるのと編集パスワードを忘れたので
連投になりますがこの記事を解決に使わせていただきます。

閉鎖

“C言語何でも質問掲示板” へ戻る