超簡易テキストエディタ

Windows 10ではVBS(VBScript)ActiveXWSH(Windows Script Host)HTA(HTML Application)などは動作しないと思っていたが、一概にそうだとばかりは言えないようである。これらの古い技術を使ったものは確かにMicrosoft Edgeでは動作しない(と思う)。しかし、IEでは一時は動作しなかったが、Microsoftの気まぐれで今ではまた少しは使えるようになっているようである。

ここでは大昔に作った次のようなものをWindows 10/IEで復活・再生してみたものである。プログラムの本体的な部分はたったの数行ですむという超低レベルなものである。なお、今こういうものが必要になるような状況は皆無である(実用性はほとんどない)。いってみればボケかかった頭の体操である(笑)。

これは、動作の本体的部分にVBScriptを使い、画面サイズの設定とボタンの色の変更にJavaScriptを使ったHTMLファイルである。

ちなみに、これはHTAで画面サイズを固定する」プログラムのサンプルである。右側、下側にスクロールバーがなく、画面サイズの変更もできないダイアログ形式になっている。実は、このプラグラムはこちらの方がメインのテーマである。「文字コードの変更」などを目的としたものではない。



Windows 10/JavaScriptでの試作

Windows 10のデカ文字化、デカ画像化に合わせて修正が当然必要になるが、それ以外にも数カ所修正した。
  1. ファイル名の取得の部分に「input type="file"」を使っているが、これには「value」属性はない。この部分を書き換えたりすることはできない。しかし、「value」の値に匹敵するもの(要するにファイル名)は取得することができる。
    したがって、上の場合では、常に読み込んだファイル名に対して書き込みを実行することになる。要するに、上書き保存しかできないことになる。これは少し不便である。
    そこで書き込み用のファイル名として「input type="text"」を作り、「CopyFName」ボタンで読み込みファイル名と同じものがここに出るようにした。ここでのファイル名の変更は当然自由にできる。

  2. 上の場合では、VBScriptJavaScriptを混在させて使っている。それでも正常に動作はする。
    しかし、今回は、すべてJavaScriptに統一して書き換えた。ただし、JavaScriptではクッキー以外のファイルの読み書きはできないので、VB/VBAでおなじみのFileSystemObjectJavaScriptから呼び出して使っている

  3. VBScriptTrue, FalseJavaScripttrue, falseに機械的に置き換えただけである。
    falseはほぼ同じ(0)だが、trueでは差異(-1か1)がある。今のところ動作面でおかしい点は出ていない。

    参考
    各言語での真偽の値は次のようになる。

    VBScriptでは、
    True は、真 (-1) の値と等しいキーワードです。
    False は、偽 (0) の値と等しいキーワードです。
    - Microsoft「VBSCRIP5.CHM」 -

    C/C++では、
    真(true)
    論理演算における2値の一状態。ブール演算では1、CやBASICの式では非0。ただし、式の論理演算(ビット単位でない)の結果では、Cでは1、BASICでは-1。
    偽(false)
    論理演算における2値の一状態。ブール演算、CやBASICの式では0。
    - 平林雅英「新ANSI C言語辞典」(技術評論社)361p,306p -

    JavaScriptでは、
    論理値の扱いはプログラミング言語によって異なるので注意が必要です。JavaScriptは論理値型という明確なデータ型を持ちますが、CC++は単に整数値を使って論理値を表現しているだけにすぎません。JavaJavaScriptよりもっと厳格なデータ型を持ちます。例えば、JavaScriptの論理値はほかのデータ型へ変換することが容易にできますが、Javaはこれができません。データ型の変換が可能だという意味では、JavaScriptの論理値型はJavaよりCC++のほうに似ているといえます。
    - David Flanagan「JavaScriptプログラミング」(O'REILLY)42~43p -
    また、「JavaScriptでは必要に応じてtruefalseを1と0に変換して使うこともあります」(同書42p)と指摘されている。

  4. ボタンはスタイルの設定(色付け)はせずに、シンプルにデフォルトの状態にした。
    hta_text_editor.hta
    ボタンに色などのスタイルを設定したもの。動作のメカニズムは以前のものと同じ。
    hta_text_editor_vbs.hta
    ボタンはデフォルトのまま。動作のメカニズムは以前のものと同じ。
    hta_text_editor_js.hta
    ボタンはデフォルトのまま。動作のメカニズムは以前とは違ってすべてJavaScriptに変更したもの(下記の画像)。



実行例

1
sjis_std.txt というShift_JISのファイルを読み込み、それをsjis_std_uni.txtというファイル名でUnicode(UTF-16LE)で保存したときのファイルの16進ダンプ。
確かに、Sfift_JIS → UTF16LE の変換ができている。


2
uni_std.txt というUnicode(UTF-16LE)のファイルを読み込み、それをuni_std_sjis.txtというファイル名でShift_JISで保存したときのファイルの16進ダンプ。
確かに、UTF16LE → Sfift_JIS の変換ができている。


- 2019/09/08 -





なつかしのWSHの復活と再生(tpc_0442)
なつかしのWSH(tpc_0438)
なつかしのHTA(tpc_0439)
なつかしのHTA/超簡易画像ビューア(tpc_0444)
なつかしのHTA/超簡易テキストエディタ(tpc_0458)



バカほどこんな骨董品に興味をもつのよね。
人目の前世紀の遺物のアクセス(since 2020/11/05)。