UWSC ver5.0.0 の VAR_ASTR/VAR_USTR
UWSC Ver5.0.0からVAR_BSTRが廃止となり、VAR_ASTRとVAR_USTRができた。
そして、ENCODEにCODE_ANSIが追加となった。
この関係を探った結果。
- 基本は、VAR_USTR
- ENCODE CODE_ANSIで、VAR_ASTRになる(VARTYPEでも変換化)
- VAR_ASTRをVAR_USTRに戻すには、EMPTYか""を足すかVARTYPEで変換
イマイチ存在意義がない気がする、、、。(LENGTHやASCでも差は見られない)
確認スクリプト
msg = "あいう" print vartype(msg) // 258:VAR_USTR msga = ENCODE(msg, CODE_ANSI) print vartype(msga) // 256:VAR_ASTR msga = vartype(msg, VAR_ASTR) print vartype(msga) // 256:VAR_ASTR msgu = msga + EMPTY print vartype(msgu) // 258:VAR_USTR msgu = vartype(msga, VAR_USTR) print vartype(msgu) // 258:VAR_USTR print length(msga) + " " + length(msgu) + " " + lengthb(msga) + " " + lengthb(msgu) print asc(msga) + " " + asc(msgu) + " " + ascb(msga) + " " + ascb(msgu)
内部的には意味があるんでしょうけど。
あとは、前から作っているDLLモジュールみたいに、RtlMoveMemoryを使うケースで使うくらいかな。
互換性問題
ver5.0.0より前のスクリプトの修正方針
- VAR_BSTRの一致確認は、VAR_USTR。一致確認以外は適宜修正
- MSGBOX/INPUT/SLCTBOXのクラス名変更
- UWSC.INI/UWSC.LOGの直接参照している乱暴者は、パス修正
- SETSLIDERのGET_SLIDERは、、、未検討
- CREATEFORMのFOM_NOLUNAは、XPは知らん
- ログのフォントを変えたい場合は、UWSC.INIの直接修正という狼藉のみか?
ver5.0.0はまだまだ使いたくない、という場合は以下のモジュールが助けになるかも。
MODULE V5 PUBLIC VAR_STR = 258 PUBLIC MSGBOX_CLASS = "TUmsgDlg_uwsc" PUBLIC INPUT_CLASS = "TUinpBox_uwsc" PUBLIC SLCTBOX_CLASS = "TUslctBox_uwsc" PROCEDURE V5() IFB GET_UWSC_VER < 5 THEN VAR_STR = 8 MSGBOX_CLASS = "TFmsgDlg.UnicodeClass" INPUT_CLASS = "TFInpBox.UnicodeClass" SLCTBOX_CLASS = "TFSectBox.UnicodeClass" ENDIF FEND ENDMODULE
他のモジュールから参照する際、V5のコンストラクタが遅い場合は、他のモジュールの先頭で呼んでしまってください。
何回実行されても特に問題はないので。