tbasic forum
掲示板 => Tiny Basic for Windows => スレッド開設者: 早起き三文 より 2022年 6月 16日 , 午前 08:56:58
-
もしかすると、TXT拡張子の文をそのまま読み込んでいるからからもしれませんが、TBT拡張子でも結構な頻度で発生します。
数字(変数含む)自体には問題ないのですが……
クソリプ?になるかもしれませんが、気になったのでお伝え致します。
-
> 文字化けが起きやすい……
状況がよく分からないので,正確なことは言えませんが,ここでは,tbasicのプログラム編集での文字化けについて
説明します。
一般的に,文字化けは文字エンコーディングの判定ミスで起こります。
現在のtbasicでは,デフォルトはSJISですが,最近のテキストでは,UTF8の場合もあります。
プログラム読み込みは一応AUTOで可能ですが,その際のエンコーディングの判定ミスがあると文字化けが起きます。
また,コピーペーストで編集画面に取り込む場合も,元ファイルによって,場合によっては文字化けが起きることがあります。
tbasicへのプログラムの読み込みで文字化けが起きた場合は,オープン時にエンコーディング
設定で色々指定して試してみてください。
一つ別な方法としては,次があります。
エンコーディングについて確実なエディター例えば,
メモ帳などで一度読み込んで,文字化けの無いことを確認して,それをSJISで保存し,それをtbasicに読み込ませる
と言う方法です。
tbasicのプログラムはテキストファイルならなんでも構いません。
tbtは推奨ですが,txtでも問題なく読み込めます。
> 結構な頻度で発生します。
どのような状況でしょうか。教えて頂ければ対応法が分かるかもしれません。
-
御丁寧に、御返答ありがとうございます。
どうも、エンコードの問題ではなく、部分的に文が変化するのです。
全部文字化けするのであれば、エンコードの問題だと話は解るのですが……
Tbasicでtbtテキストを読み込んだ際
つまり、編集しようとすると、約5回に一回位の割合で、文字が乱れます。
別にそれ自体はすぐに文を直せるのですが
もし、このプログラムでゲームを作ってリリースすると
以前にお話致しましたように、このTbasicツールを使ってファイルを読み込む事になります。
となると、リリース後も変化が起こりうるという可能性があります。
自分のパソコンシステムとは独立したツールですので、条件が同じであれば、ゲームプレイ中に文字変化が起こりえます。
以前、プログラムそのものが(PRINT ゛テスト゛)の(゛")が変化して、実行不可能になりました。
ただ、推測ですが容量が多くなるほど、起こる頻度が高い気がします。
まあ、どの言語で書いても、コードには起こりうる現象ですが
一応お伝え致したいと思いました。
こちらでも今後も、調べてみる予定ですが……
-
追記/
とは言いましても、フリーツール(無料)ですので、正直こちらが文句を言う筋合いはありません。
この部分以外は本当に素晴らしく、インターフェイスが抜群です。
特に、コントロールパネルの使い勝手が最高で、フリーのツールとは思えません。
このツールを使用しないのは、あまりにも勿体無いので、どうにかして使い続けたいのですが……
-
こんにちは。
>Tbasicでtbtテキストを読み込んだ際
>つまり、編集しようとすると、約5回に一回位の割合で、文字が乱れます。
>ただ、推測ですが容量が多くなるほど、起こる頻度が高い気がします。
私が日常的に使用していて,このような経験が無いので,何か特殊な状況があるかも知れません,
tbasicへのプログラムの読み込み自体は,私が使っているコンパイラ(Delphi)のルーチンを呼んでいるだけなので,
読み込み自体のバグではないと思います。(自作ルーチンならバグの可能性はありますが。)
> つまり、編集しようとすると、約5回に一回位の割合で、文字が乱れます。
全く同じプログラムに対してこのようなことが起きるとすれば,何か特殊な問題かもしれません。
・文字化けは同じ場所で起こるのでしょうか
・どのような文字が文字化けするのでしょうか
・プログラムの文字化けの部分に「何か見えない」コードが紛れ込んでいる可能性はないでしょうか。
比較的小さなプログラムで,読み込みが不安定なものの例があれば,
お送りいただければ調べてみます。
ご期待に沿う回答でなくて申し訳ありません。
-
返信致します。
問題があるのは
・print
・Gprint
のみで、約1000文字に一つあたりの割合で発生します。
また、変数や文字列変数は問題なく、起こりうるのは
print "テスト"
などと書いた時のみ、単純なその場でのテキストのみです。
print テスト$
などの文字列変数には問題はありませんでした。
文字はshift-jis(s)でtxtやtbtで普通に書いていますが
文字化けしたところを調べてみた所、バイト単位で
shift-jis(s)の
16進法で
全て81-45バイト数値、つまり(・)←の記号に表される事になっています。
例 print "テスト"
print "テス・"
文字化けはすべてこれ(・)になっておりまして、他の文字での、謎の漢文みたいな文字
(囀とか羹とか)
では、文字化けは起こっていないと、解りました。
また、補足としまして、プログラム全体の容量としては約0.50MB(Tbasicインタプリタ除く)位です。
まあ、文を書いているときは勢いで雑に書いているので、何か変な入力をしたのかもしれません。
とはいえ、書いたその場で、文字化けがいきなり起こる訳でもないので、書いた物を全てバイト単位でチェックする訳にもいきませんし……
ただ、変化が起こるのは文字だけで、数字(変数)の変化は起こりません。
そのため、よほどの事が無い限り、プログラムは動きます。
こうなると、私のパソコンの問題なのかもしれません。
~イチャモンを付けたお詫び~
いやー、しっかし使い勝手のいいツールですねー
グラフ画面にグラフイックを取り込めば、ちょっとしたゲームも作れますし、コントロールパネルのボタンが、プログラム本体をENDコマンドで停止させても使えるという点が、個人的には地味に有効です。
コントロールボタンも40個が限度とはいえ、変数を使えばいくらでも流用が出来るという所が素晴らしい。
-
返信ありがとうございます。
>問題があるのは
>
>・print
>・Gprint
>
>のみで
>文字化けしたところを調べてみた所、
>全て(・)←の記号に表される事になっています。
>例 print "テスト"
> print "テス・"
>
>文字化けはすべてこれ(・)になっておりまして、
状況が分かりました。
問題は,プログラム読み込み時ではなく,そのプログラム実行時の文字列定数の表示での文字化けですね。
これは,同じプログラムで
何回やっても常に同じように起こるのでしょうか。
それとも,何回かに1度起きるのでしょうか。
少し調べてみます。もしかしたら,バグかも知れません。
ただ後者だとすると,見つけるのは難しいかもしれません。
追伸
補足です。
>コントロールパネルのボタンが、プログラム本体をENDコマンドで停止させても使えるという点が、
>個人的には地味に有効です。
この機能は,ダイレクトモード実行時に,ユーザー定義関数を利用するために作りました。
内部的には,Endは,実行ルーチンの終了で,それを実行した環境はそのまま残っています。
次に,Run等実行した場合は,前の環境を消去して,新しいプログラムの実行に入ります。
ですから,ユーザー定義関数のみを書いたプログラムを実行すると,実行結果としては
何もありませんが,内部的に,定義された関数は生きています。この状況で,ダイレクトモードから
定義した関数を利用することができます。
tbasicにはない関数を自分で定義して,実行するとその環境下,ダイレクトモードでその関数
を利用できます。
コントロールボタンの利用もその一つです。
-
色々と調べた結果、特に文字化けを起こした箇所、状況に共通点はありませんでした。
サブルーチン、ファンクション、そしてメインルーチン(変な言い方ですが)に共通して、文字化けは発生していました。
ただ、文字列変数には起こらない事が確認されたため、代用案として、文字を全て文字列変数に格納してプリントするという方法はあります。
//例
print "テスト"
を
LET i$ = "テスト"
print i$
//
理論的には全く同じですので、取り合えずこれでやり過ごそうと思います。
相談にのって下さって、本当にありがとうございます!!
補足////
しかし、ユーザーフレンドリーな仕組みですねー
インタプリタの容量がBASICにしては大きいのも頷けます!!
-
こんにちは。
>理論的には全く同じですので、取り合えずこれでやり過ごそうと思います。
取り敢えずは,それでお願いします。
私の方もコードをチェックして,問題の可能性が見つかれば,修正します。
-
はい、そうさせて頂きます。
相談に乗って頂いて、本当にありがとうございます!!