-
Notifications
You must be signed in to change notification settings - Fork 5
macro_task
nmaya edited this page Aug 5, 2023
·
6 revisions
ttmdef.h で定義されている
- 識別子(変数名,ラベル名)長上限 (MaxNameLen)
- 32バイト(文字列終端'\0'含む)
- 内部の変数などの識別子保管領域の上限を撤廃(r8696)
- ttmparse.cpp 内の次の関数を直せば全対応できそう
- GetIdentifier()
- GetLabelName()
- 文字列変数に格納できる文字長上限 (MaxStrLen)
- 512バイト(文字列終端'\0'含む)
- 内部の文字変数の保管領域の上限を撤廃(r8696)
- まだあちこちに上限が残っているので対応は時間かかりそう
- Tera Term 本体との DDE 通信でも MaxStrLen が使われていたはず(ttermpro.exe にも影響あり)
- #40992 マクロの仕様 MaxNameLen と文字列変数の文字数上限の検証結果
- 1行の長さ(MaxLineLen)
- 1024バイト
- まだ見切れていない
長さ・位置・文字コードを扱うコマンド ... ttssh2-dev 658
-
長さ
- Tera Term 4.x ではバイト数
- Tera Term 5.x でもバイト数
- 5.1 以降で変更される見通し
-
長さ・位置が関係するコマンド
- strcopy
- strinsert
- strremove
- strreplace
- strlen
- strmatch
-
文字コードを扱っているコマンド
- str2code
- code2str
-
#39729 変数名の長さの上限について
- ラベルなどが31文字しか識別しない
- 識別子長が32バイトだから
- 長さの上限がなくなれば問題ない
- 実行しない行でエラーが出る...#46555 マクロで処理されない行でも 「#」があるとSyntax errorが発生
- 読み込んだ後に最初にラベルの一覧を作るため(見切っていない)
- エラーが出るのが正しいと思う。コメントではないのにエラーにならないことがあり、そのほうがおかしいと思う。
- Unicode化
- 内部データ
- UTF-8に変更
- ttlファイル読み込み時にUnicodeに変換
- 変数名、文字列など
- 変更前は ANSI(ACP)文字列
- UTF-8になったので漢字などはバイト長が長くなる
- 従来はセットできたデータが途切れる可能性がある
- 正規表現処理 (r8710)
- デフォルトエンコーディングを ASCII から UTF-8 に変更
- ENCODING_ASCII -> ENCODING_UTF8
- 内部は ONIG_ENCODING_ASCII -> ONIG_ENCODING_UTF8
- デフォルトエンコーディングを ASCII から UTF-8 に変更
- ファイル名の扱いをUnicode化 (r8713)
- 変更前は ANSI(ACP)文字列
- fileconcat
- filecreate
- fileopen
- filecopy
- filedelete
- filerename
- filesearch
- filestat
- filetruncate
- findfirst
- findnext
- folderdelete
- foldersearch
- getfileattr
- setdir
- setfileattr
- GUIのUnicode化
- ダイアログに表示される文字はUnicode化 (r8686, r8687, r8689, r8692, r9695など)
- 変更前はANSI文字列
- 内部データ
- 変数,ラベルの数の上限の撤廃(r8696)
- 変更前の上限
- 整数変数 256+4個
- 文字列変数 256+20個
- 整数配列変数 256個
- 文字列配列変数 256個
- ラベルの個数 512個
- 変更前の上限