HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0724
猫山田広screenの内容のファイル出力7未解決


猫山田広

リンク

2012/7/24(Tue) 13:21:11|NO.47885

テキスト処理をするプログラムを作成している途中で困っています。

いくつかのルーチンからの出力を適宜mes命令でscreen 0 に書き出しています。
これをプログラムの最後にまとめてテキストファイルに保存したいのですが
良い方法がわかりません。

こうしたことは可能でしょうか?それともこの出力はグラフィックになっている
のでテキストに出すことは出来ないのでしょうか?

ご存知の方はよろしくお願いいたします。



この記事に返信する


あり

リンク

2012/7/24(Tue) 15:25:33|NO.47888

mesで表示した文字画像から直接文字を取得する事はできませんが
文字を表示する際にメモリノートパッド命令等で文字列を変数に
保存しておけば後で自由に処理が可能です。

; 1から10までの文字列を表示&変数に保存 notesel buf ; メモリノートパッド命令で使う変数 repeat 10, 1 mes cnt noteadd str(cnt) ; 文字列を変数に保存 wait 30 loop mes "文字列表示終了" mes ; 変数から逆順に文字列を取得&表示 repeat 10 wait 30 noteget txt, 9 - cnt mes txt loop mes "文字列処理終了"



KA

リンク

2012/7/24(Tue) 15:27:22|NO.47889

mesで表示する時に、変数に保存していきます。



猫山田広

リンク

2012/7/26(Thu) 19:21:22|NO.47949

お二方、ご解答ありがとうございました。

ただ、includeした複数のモジュールから適宜テキスト出力をさせているため
それらをうまくまとめて順序だてて格納するのは存外気を使います。

どうせscreen画面に順序立てて出力されているのであれば、それをうまく
利用する方法があるのではないか、と考えていました。
難しいようですね。
HSP内部の構造を知っていないと無理なのかもしれません。



KA

リンク

2012/7/26(Thu) 20:12:32|NO.47950

画面をキャプチャして文字認識ソフトにかける。

と言う方法も有りますので参考にして下さい。



あり

リンク

2012/7/27(Fri) 01:21:14|NO.47958

ちょっと裏技的な方法になりますが
mesの互換命令printがある事を利用して#undefと#deffuncで
mesの挙動を書き換える事でモジュール内のmesで表示される
文字列であっても保存する事が一応可能です。

以下は変数xxx_bufにmesで表示される文字列を全て保存
するという一例です。

; mes書き換え(mesの挙動を書き換えます) #undef mes ; mesの命令名登録を削除 #define global xxx_buf xxx_buf@mxxx_mes #module xxx_mes #deffunc mes str txt ; 新しいmesの挙動を定義 notesel xxx_buf ; (xxx_bufに表示文字列を保存する命令) noteadd txt print txt noteunsel return #global ; 書き換え終了 ; #includeしたつもりのモジュール #module #deffunc pmes str txt mes txt return #global ; モジュール終了 mes "test" mes "テスト" ; pmes内部で使われるmesの文字列もxxx_bufに保存されます pmes "1234" pmes "abcd" print "\n変数xxx_bufの中身" mesbox xxx_buf, 320, 200
※ちなみにただ文字を表示したいだけの時はmesを使わずに
printを使う必要があるので注意。



ヂオン

リンク

2012/7/27(Fri) 08:22:41|NO.47960

もし今後、モジュール内の処理状況を出力する必要がある場合は、logmes 命令を使用したらどうでしょうか?
デバッグウィンドウに、内部情報をプリントすることができ、なおかつ、コンパイル時に除外されるので便利です。



YSR

リンク

2012/7/27(Fri) 18:28:36|NO.47974

>ありさん
>ヂオンさん
つまり、これ2つをくっつけると、

;mesにlogmes機能を付加 #undef mes #module xxx_mes #deffunc mes str txt logmes txt print txt return #global for k,0,100 mes str(k) next assert
ってことか?
(デバッグウィンドウを表示させながら実行する必要がある)



ONION software Copyright 1997-2023(c) All rights reserved.