プログラミング言語「ドリトル」

大阪電気通信大学 兼宗研究室

ユーザ用ツール

サイト用ツール


qa_automatic_line_break

**以前のリビジョンの文書です**

テキストエリアオブジェクトに、指定した文字数で改行して表示する命令を追加する

現時点のドリトルでは、文字を表示するGUIオブジェクトにおいて指定文字数での自動改行に対応していません。

ここでは、暫定的な対応として、テキストエリアオブジェクトを拡張して指定文字数での自動改行機能を持つ命令「入力」を追加してみます。 なお、ここで作る命令は、追記ではなく上書きで文字を表示するようにしています。

1.テキストエリアオブジェクトへの命令の定義を追加する

プログラムの冒頭に、以下のプログラムをコピペしてください。

////////////////テキストエリアの命令追加////////////////
テキストエリア:__maxLLen=".........."。
テキストエリア:改行位置=「|num;tmp|
	tmp="("。
	「tmp = tmp +"."。」!(num)繰り返す。
	self:__maxLLen=tmp + ")"。

self」。

テキストエリア:入力=「|str|
	改行コード=(0x0d!コード文字)+(0x0a!コード文字)。
	結果=(str)!(self:__maxLLen) ("$1"+(改行コード)) 全部置き換える。
	self!(結果)上書き。
self」。
////////////////テキストエリアの命令ここまで////////////////

2.テキストオブジェクトを作る。

通常と同じようにテキストオブジェクトを作成します。

表示=テキストオブジェクト!作る。

3.改行文字数を指定する。

実際にテキストエリアに文字を表示させる命令(=「入力」の命令)を実行するよりも前に、テキストエリアオブジェクトに対して「改行位置」の命令で改行文字数を指定します。以下は20文字で改行する指定をした場合の例です。

表示!20 改行位置。 //20文字で改行する設定。

3.文字の表示を指示する

「書く(上書き)」の代わりに、「1.」で作った自動改行機能付きの命令「入力」を用いて、文字の表示を指示します。

表示!”aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”入力。

4. 1~3までのプログラム例

////////////////テキストエリアの命令追加////////////////
テキストエリア:__maxLLen=".........."。
テキストエリア:改行位置=「|num;tmp|
	tmp="("。
	「tmp = tmp +"."。」!(num)繰り返す。
	self:__maxLLen=tmp + ")"。

self」。

テキストエリア:入力=「|str|
	改行コード=(0x0d!コード文字)+(0x0a!コード文字)。
	結果=(str)!(self:__maxLLen) ("$1"+(改行コード)) 全部置き換える。
	self!(結果)上書き。
self」。
////////////////テキストエリアの命令ここまで////////////////


表示=テキストエリア!作る。
表示!20 改行位置。 //20文字で改行する設定。
表示!”aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”入力。

授業にて簡便に利用するために

「1.」の記述をコピペさせることが難しいと考えておられる場合は、「1.」の内容を「テキストエリア拡張.ini」という名前のテキストファイルで保存してdolittle.jar(dolittle.bat)と同じフォルダ上に置くことで、生徒は以下の記述で、追加した命令を使うことができるようになります。

※今後のバージョンでの機能改善で、自動改行等の機能追加も検討していこうと考えています。 正式な対応となった場合には、機能が衝突して問題を起こす場合などがありますので、iniファイルは削除するようにしてください。

システム!"テキストエリア拡張" 使う。
表示=テキストエリア!作る。
表示!20 改行位置。 
表示!”aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”入力。

注意

表示を行う際に文字処理を行うため、パソコンの性能によっては、動作が重くなる場合があります。

qa_automatic_line_break.1607693105.txt.gz · 最終更新: 2020/12/11 22:25 by klab