- PR -

VB2005 コンソールアプリケーションについて

1
投稿者投稿内容
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2007-02-20 17:42
VB2005に関して、一つ質問させてください。

Console.WriteLine()にて、DOS上に文字などを表示させることができますが、
プログラム上での処理件数を表示させたいと思っています。

現在の処理件数/総件数

のような形でです。

Console.WriteLine(現在の処理件数/総件数)だと処理件数が増えるだびに
DOS上に表示されてしまいます。(まぁ、WriteLineを使っているんで当り前ですが・・・。)

そこで、"現在の処理件数"の所だけをカウントアップさせる表示方法ってあるのでしょうか?

以上、よろしくお願いいたします。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-02-20 17:56
Console.Writeにして、"\r"を使うとか。

あれ?"\r"じゃなくて"\b"だったかな?

[ メッセージ編集済み 編集者: Blue 編集日時 2007-02-20 18:01 ]
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2007-02-20 18:04
こんにちは。

Windows APIのSetConsoleCursorPosition関数あたりを使うとか。

引用:

Blueさんの書き込み (2007-02-20 17:56) より:
あれ?"r"じゃなくて"b"だったかな?



"¥r"でよいと思いますが、VBだとvbCrですね。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-02-20 18:10
実は、そういう処理をしたコード(C++)があったのですが、
上書きになって以前に出力した文字が残ってしまうのが問題で、
出力した文字数分 \b を送っていたようです。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2007-02-20 18:34
こんばんは。

引用:

Blueさんの書き込み (2007-02-20 18:10) より:
実は、そういう処理をしたコード(C++)があったのですが、
上書きになって以前に出力した文字が残ってしまうのが問題で、
出力した文字数分 b を送っていたようです。



なるほど…と思い一応試してみましたが
¥b(vbBack)で文字が消去されませんでした。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-02-20 19:33
引用:

Tdnr_Symさんの書き込み (2007-02-20 18:34) より:

なるほど…と思い一応試してみましたが
¥b(vbBack)で文字が消去されませんでした。



すみません、勘違いでした。

\bを使っていたのは、すでに文字列があって、\rで行頭にもっていけなかったので、
\bで戻していたのでした。

C言語でかくとこんな感じ。
コード:
#include <stdio.h>
#include <windows.h>

int main(void)
{
	int n = 0;
	printf("進行状況:");
	while (n < 20)
	{
		printf("%02d/20", ++n);
		printf("\b\b\b\b\b");
		Sleep(500);
	}
	printf("\n");
    return 0;
}



上書きで文字が残ってしまうのは、(空白埋めでも0埋めでもいいので)固定長の文字列を
出力することで回避させていました。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-02-20 20:59
VB2005とのことですので、
Console.SetCursorPositionやConsole.Clearが使えないでしょうか。
#未検証です
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2007-02-20 21:20
よねKENさんが仰るとおり、Console.SetCursorPositionを使用することができます。
以下サンプルです。参考になればよいですが
コード:

'カーソル位置を(3,2)にする
Console.SetCursorPosition(3, 2)
'100を表示
Console.WriteLine("100")
'[Enter]キーが押されるまで待つ
Console.ReadLine()

'カーソル位置を(3,2)にする
Console.SetCursorPosition(3, 2)
'321を表示(先ほどと同じ位置(3,2)に表示する)
Console.WriteLine("321")
'[Enter]キーが押されるまで待つ
Console.ReadLine()



_________________
--------------------------------------------
HIRO@わんくま同盟
HIRO's.NET VB.NETとC#のTipsを掲載しています

[ メッセージ編集済み 編集者: HIRO 編集日時 2007-02-20 21:20 ]

[ メッセージ編集済み 編集者: HIRO 編集日時 2007-02-20 21:21 ]

[ メッセージ編集済み 編集者: HIRO 編集日時 2007-02-20 21:48 ]
1

スキルアップ/キャリアアップ(JOB@IT)