- PR -

コンソールアプリで同じ行に上書き表示するには

投稿者投稿内容
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-02-02 17:19
また勘違いされると困りますんで、、

.NET のコードに改造するのはそれほどムズい事ではないでしょう・・・・と勝手に思いこんでる
訳ですが。全く参考にならんほど懸け離れてるもんかね(笑)
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-02 17:28
引用:

ゆうじゅんさんの書き込み (2004-02-02 15:37) より:
コンソールアプリで動くかわかりませんが
DOSの場合は↓のように書いてました

Console.Write("現在{0:P}\r", percent);



これで、うまくできるみたいですね。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-02-02 17:31
ほむらです。
コブラ氏へ
引用:

System.out.println("^[[2J");
System.out.println("^[[0;0H");


エスケープシーケンスですか。懐かしいですね〜
VZ使ってバッチファイルとか いじっていたものです。

#SET PROMPTで色を変えていたりしました。
#9xはできるけど2000だとできないんですよね〜 < 文字色変え

ただ、CLSしてしまうのはまずくないですか?
アプリの使い方にもよると思いますけど。
っていうかCLSしたら自動的に左上に移動しますよね?

どうせ使うのなら^[[?Dとか ^[[s と ^[[u とか。。。
sとuは微妙ですけどねDは使っていたときもあります。

#DOSの時は基本的にアセンブラ使っていましたがw
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-02 17:49
引用:

ほむらさんの書き込み (2004-02-02 15:37) より:
ただし。書き込みが余った部分はそのままになるので
足りない分はスペースで埋める必要があります。



よくスペースで埋めるの忘れて「?」とか思ったことがありました。
ほろ苦い思い出です。

というわけでスペースを埋める処理を追加

Console.Write("現在{0,3:P}\r", percent);
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2004-02-02 17:53
karajanです。

お返事が遅くなってしまいすみませんでした。

\r を使用すればよかったんですね・・・。
ぜんぜん頭が回りませんでした。

おかげさまで、うまくいきました。
ありがとうございました。

---------
いざ作ってみると、コンソールアプリのほうがGUIアプリより結構面倒ですね。
単に慣れてないだけかもしれませんが。

コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-02-02 18:40
いやぁ、 unix 使いとしては curses 使うべきなんでしょうが、 MS-DOS からの負の(?)遺産
を受け継いでおるもんで、、(笑) っていうか、エスケープシーケンス自体は、CONFIG.SYSの
(化石)ANSI.SYS を呼び出すか呼び出さないかで有効無効にできたりもしたんですが。

NEC-PC9801 の頃、 far ポインタで VRAM のアドレスに直接アクセスできた、あのやり方が
もう通用しませんで、この手の「見栄え」制御にエスケープシーケンスが使えないとなると、
かなり煩わしい。どうもレジスタに何か入れて int 21h というやり方に馴染めず・・・

^[[2J は、、画面をすっきりさせる為だけに書いたのですが、毎回すっきりさせる必要は
無いですね。掃除するにしても、 for に入る前に一回呼ぶだけでエエかと。。。

エスケープシーケンスって以外と重いっちゅぅ話を聞いたことがあります。
そうですか、もう Windows2000 では通用しませんか。。。代わりの方法があれば教えて貰いたい
もんです。

いや何より、ほむら氏がまだ三十路前だという事実に驚いてしまいました。
私より技術力上回ってる・・・
Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2004-02-03 09:40
 こんにちは。
 そういえば、昔は locate 10,10 とかやっていたのを思い出しました。
今はつかえないですよね・・・。
 エスケープシーケンスと組み合わせたsubを作っておいたら・・・と
思ったんですが、一度作っても、二度は使わないっぽい??

 あ、たぶん、F-BASIC/WINでなら、使えるかも・・・(?!)

  
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-02-03 10:52
Linux版の Yet Another BASIC(yabasic) っちゅぅので組むと、たったこんだけで済んで
しまいました。

http://www.yabasic.de/download/yabasic-2.741.tar.gz

#!/usr/local/bin/yabasic

clear screen
for I=0 to 1024
print at(10,10) "Now ",I,"%"
next I

結局、そういうエスケープみたいな動作を前提としてるかしてないか、実装の違いも影響大ですな。
因みに、yabasic は Windows版もあります。

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