ホーム > TTSneoのお知らせ > 詳細

TTSneo1.0正式版が公開しました。
TTSneo 0.998以降に追加された機能や改良された点を紹介します。

以前よりももっと使いやすく、プログラムも書きやすく短くなりましたので、ぜひ最新版をご利用ください。

 

修正した問題・向上した点

不都合の修正

・TTSスタジオneoの不都合

・メニューを多く作成すると、ボタンをクリックしたときなどに誤動作する不都合

・表オブジェクトの「一覧」設定項目を指定すると、欠ける部分があるの不都合

・「配列削除」関数で、空白行があると正しく処理させないことがある不都合  など

向上したところ

インストーラの改良

ユーザさんのご意見を反映して、Inno Setupで作成されたものに変更しました。

「圧縮」「解凍」命令で既存の自己解凍書庫の操作に対応

「圧縮」「解凍」命令など、書庫関連命令で、自己解凍書庫(exe)の判別して、適切な形式で処理するように改良

複数行記述に対応

行の最後に「_」を付けることで複数行またがって記述することが可能になりました。
以前からも語尾に「、」を付けることで複数行指定が可能でしたが、「_」では二次配列の指定や、複数行のメッセージの指定などが可能になりました。

「    こんにちは ようこそTTSneoへ_
TTSneo1.0では、様々な改良がされています。_
行の最後を「_」にすることで複数行にまたがって記述できます」を表示

表オブジェクトの簡易印刷機能

表オブジェクトの簡易印刷機能ができるようになりました。

表1を印刷

上の命令を実行することで、印刷画面のあとに、表の内容が印刷できます。
フォント・セルの幅・線の色・セルの背景など、基本的な設定は反映されて印刷されます。

簡易印刷ですので、用紙や余白以外の詳細な設定は、変更できません。

印刷の余白設定に対応

一部の場合、「ページ設定を選択」命令で設定した余白が反映されるようになりました。

ページ設定を選択
文章テキスト1を印刷

対応しているのは、文章テキストと表のみで、拡張テキストを印刷する場合には反映されません。

「使うファイルは」命令の改良

使うファイルは」命令にTTSファイルを指定した場合、そのTTSファイルで指定した「使うファイルは」命令も利用できるようになりました。
この改良により、よりプログラムを分散化しやすくなりました。

「参照」命令で参照したプログラムのエラー表示に対応

TTSスタジオneoでは、「参照」命令で指定したプログラムでエラーが発生すると、そのファイルをアクティブにして、問題の部分を指摘できるようになりました。(すでに開いている場合のみ)
これにより、分散化している場合に、よりプログラムの修正が楽になりました。

 

新しい設定項目

リストオブジェクト・リストビュー・ツリービュー

「個数」設定項目

表示されている項目の数を表します。

リスト1の個数回、数に1からカウントして繰り返せ
  ・・・
繰り返し終わり

ウィンドウ

「位置と大きさ」設定項目

位置と大きさを一度に指定できます。

ウィンドウ1を作れ
その位置と大きさは、100,100,200,100
待機

「種類」設定項目

ウィンドウの外見を変える「種類」設定項目を追加しました。

これまで、ウィンドウ・固定ウィンドウ・ツールウィンドウなど、種類ごとにウィンドウの名前が分かれていましたが、
今後は、どの種類も、「ウィンドウ」に統一する予定です。

※TTSスタジオneoやサンプルなども今後は、どの種類でも「ウィンドウ」で書くように統一する予定です

ウィンドウ1を表示
その種類を、固定に変えろ

ほとんどのオブジェクト

「位置と大きさ」設定項目の追加

すべてのオブジェクトに「位置」・「大きさ」設定項目の機能を併せ持つ「位置と大きさ」設定項目を追加しました。
これにより、プログラムの行数を少なくすることができます。

ボタン1の位置と大きさを30,30,100,30に変えろ

 

廃止された関数や名称の変更

プロセスバーの廃止

間違った名称だったため、「プログレスバー」へ名称をすでに変更しています。
今までは、互換性を維持するため、「プロセスバー」でも正しく動作していましたが、1.0では使えません。
古いプログラムを実行される際は、オブジェクト名を書き換えてください。

「ハンドル」・「DCハンドル」関数の廃止

複数のウィンドウやピクチャーオブジェクトを扱うようになったため、「ハンドル」・「DCハンドル」関数を廃止します。
これらの関数を使っている場合は、ウィンドウにある「ハンドル」・「DCハンドル」設定項目を利用してください。

例 「ウィンドウ1のハンドル」・「ウィンドウ1のDCハンドル」

拡張コンポーネント→TTSneoプラグインへ

「拡張コンポーネント」という名称を「TTSneoプラグイン」に変更します。
段階的にドキュメントの説明を書き換えていますが、今後はTTSneoプラグインに統一します。

 

オブジェクトの別名指定について

「作れ」命令や「使う」命令で、オブジェクトを作成するときに、別名を指定することができます。
TTSneo1.0では、別名を指定したときに、そのオブジェクトで実行される手順の名前も別名になるように変更しました。

これにより、「ボタン1」「ボタン2」といった書き方を避けることができ、たくさんのオブジェクトを使うプログラムを作っても、
どのオブジェクトであったか混乱することがなくなります。

ボタン1をOKボタンとして作れ

手順は ウィンドウ1のOKボタンをクリック

終わり

窓としてウィンドウ1を使う
窓の名前は、「テスト」
窓を表示
OKボタンとしてボタン1を作れ
OKボタンの名前は、「OK」

待機

手順は 窓のOKボタンをクリック
  「こんにちは」を表示
終わり

TTSneo1.0より「使う」命令でも別名を指定することができるようになりました。

また、TTSスタジオneoでも、別名の指定に対応しました。

 

「拡張オブジェクト」が不要になります

「利用」命令で事前にプラグインを登録しておくことで、拡張オブジェクトを作る必要がなくなりました。

事前にプログラムを登録しておけば、通常のオブジェクトと同じような書き方で、
プラグインを利用することができるようになり、見やすく簡単になりました。

★コントロールタイプの例

従来

拡張オブジェクト1を、アニメーションとして作る
アニメーションのコントロールを「TTSObjEx.Anime」に変える
そのアニメ画像を「[今の位置]ufo.bmp」に変えろ

新しいバージョン

「TTSObjEx.Anime」をアニメーションとして利用
アニメーション1を作れ
アニメーション1のアニメ画像を「[今の位置]ufo.bmp」に変えろ

★ライブラリタイプの例

従来

拡張オブジェクト1をスピーチとして作る
スピーチのプログラムを「TTSSpeechN.speech」に変えろ
スピーチの性別を男に変えろ
スピーチの「こんにちは」を話せ

新しいバージョン

「TTSSpeechN.Speech」をスピーチとして利用
スピーチの性別を男に変えろ
スピーチの「こんにちは」を話せ

コントロールタイプ・ライブラリタイプ(プログラム)どちらの種類のプラグインでも区別することなく指定できます。
従来の書き方でも正しく動作します。

 

辞書機能の大幅な改良(連想配列に対応)

今まで取り扱いが少し面倒だった辞書機能を大きく改良しました。

「辞書」関数・「辞書保存」命令を使う必要がなくなり、配列と同じ書き方で、情報を読み書きすることができるようになりました。

配列の番号を指定する代わりに、名前を指定することで、連想配列として利用できるようになります。
配列と書き方は良く似ていますが、同じ変数で同時に、番号で指定したり、文字を指定したりすることはできません。

★従来(TTSneo 0.998)

内容の「とも」へ「なす」を辞書保存
辞書(内容、「とも」)を表示

★新仕様(TTSneo 1.0)

内容(「とも」)は、「なす」
内容(「とも」)を表示

 

DLL呼び出しに関する改良

構造体の呼び出しに対応

「宣言」命令を使って外部DLLの呼び出す時に、引数として構造体を指定することが可能になりました。
TTSneoでは、辞書機能を構造体に見立てて処理します。

参照渡しに対応

VBのByRefにあたる参照渡しに対応しました。
このためポインタ変数を指定しなければならなかったDLL関数も利用可能になりました。

バイナリ操作に対応

引数の変数名の先頭に「#」を付けることで、バイナリ配列として受け渡しできます。

 

構造体の利用方法(C言語/VB利用者向け)

TTSneoでは、構造体(ユーザ定義型)の代わりに辞書機能を使って、構造体を表現します。

構造体の宣言

TTSneoには、型という考え方がありませんので、構造体に必要な情報を辞書に保存しておきます。

辞書機能についての説明はこちら

辞書を構造体として初期化する 「辞書初期化」命令

[構造体名]を「[変数名]=[型/バイト数],・・・」で辞書初期化

[型/バイト数]には、「Long」「String」「Integer」または、確保するバイト数を指定します。
構造体として、辞書を利用するときは、必ず「辞書初期化」命令を実行してください。

※「Long」「String」「Integer」「DWORD」「HWND」「INT」が指定可能

 

たとえば、Win32APIにある「POINTAPI」構造体を作成するには下のように命令します。

★Visual Basicの場合

Public Type POINTAPI
    X As Long
    Y As Long
End Type

★TTSneoの「辞書初期化」命令を使うと

POINTAPIを「X=Long,Y=Long」で辞書初期化

 

構造体に値を設定する

作成した構造体に値を指定するには、辞書機能の設定方法と同じです。

POINTAPIを「X=Long,Y=Long」で辞書初期化

内容は、POINTAPI  ’構造体の基本形をコピーする
内容(「X」)は、10
内容(「Y」)は、10

この例では、基本形となる「POINTAPI」変数に辞書を作成しておき、実際に利用するときは、「POINTAPI」変数にある内容を、「内容」変数にコピーしてから使っています。
必ずもこの方法でなくてもかまいませんが、何度も利用する場合は、手間が省けるので便利です。

 

値を取得する

普通の辞書機能と同じように記述します。

内容(「X」)を表示

 

DLL関数に構造体を引数として渡す

引数に、構造体を渡せるようにするには、「宣言」命令で、引数名の前に「@」をつけてください。

user32のGetCursorPosをGetCursorPos(@POINTAPI)と宣言
POINTAPIを「X=Long,Y=Long」で辞書初期化

内容は、POINTAPI  ’構造体の基本形をコピーする
内容(「X」)は、10
内容(「Y」)は、10

20回繰り返せ
  待て 0.5
  内容をGetCursorPos  ’引数に構造体を指定する
  「[内容(「X」)],[内容(「Y」)]」を報告
繰り返し終わり

 

文字列を含む構造体

文字列を含む変数が含まれる場合は、変数名の前に「$」を付けて、確保する文字列のサイズを指定します。

★VBでの構造体の宣言

Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

★TTSneoでの使用例 (GetVersionEx関数の呼び出し)

KERNEL32のGetVersionExAをGetVersionEx(@OSVERSIONINFO)と宣言
OSVERSIONINFOを「dwOSVersionInfoSize=Long、
dwMajorVersion=Long、
dwMinorVersion=Long、
dwBuildNumber=Long、
dwPlatformId=Long、
$szCSDVersion=128」で辞書初期化

内容は、OSVERSIONINFO
内容(「dwOSVersionInfoSize」)は、内容(「__Total」)
内容をGetVersionEx
「Windows [内容(「dwMajorVersion」)].[内容(「dwMinorVersion」)].[内容(「dwBuildNumber」)] [内容(「$szCSDVersion」)]」を表示

配列全体のバイト数を取得するには、「内容(「__Total」)」としてください。

 

構造体に構造体を指定する場合

構造体の中で構造体を指定する場合は、辞書で辞書を宣言する必要があります。
「辞書初期化」命令の変数名の前に「@」をつけてください。

 

参照渡し(ポインタ変数操作)の方法

これまでTTSneoのDLL関数の引数は、値渡し(ByVal)のみに対応していましたが、参照渡しにも対応しました。

DLL関数の引数で、VBのByRefキーワードを使った参照渡し、C/C++のポインタ変数を渡す必要がある場合は、
TTSneoの「宣言」命令の変数名の前に、「*」を指定してください。
「*」を指定することで、TTSneoが自動的に参照渡しで処理します。

VBでの宣言文字列

Declare Function GetUserName Lib "ADVAPI32" Alias "GetUserNameA" (ByVal lpBuffer$,ByRef nSize&) As Long

場合によっては、「ByRef」が省略されている場合があります。ByValでない場合は、「*」をつける必要があります。

TTSneoでの利用例

’DLLの宣言
advapi32.dllのGetUserNameAをGetUserName(文字、*サイズ)として宣言

ユーザ名を表示

手順は ユーザ名
’ユーザ名の取得
  ここだけの変数は、名前
  名前は スペース(256)
  名前、256をGetUserName
  名前は 右のスペース削除(名前)
  名前で抜ける
終わり