リリースノート
既に判明している問題 - Curl RTE 8.0
コンパイラ
まれなケースでコンパイラは正しくないコードが生成される場合があります
多重ループでtagを指定してcontinueを呼び出す時に、変数の更新がループ外で反映されない場合があります。
この問題を表す例:
B12でダンプされたxの値が3に変るはずの所、2のままになっている。
{define-proc {bar}:void
|| Block B0
let x:int = 0, i:int = 0
{while tag=out, i < 2 do || B1,B2
|| Block B3
let j:int = 0
{for m:int = 0 to 3 do
{while j < 2 do || B5, B5
|| Block B6
|| {do x} || uncomment to make bug go away
{if i == 1 and j == 1 then || B7
|| Block B8
{output " continue"}
{continue tag = out}
}
|| Block B9
{inc x}
{dump x, i, j}
{inc j}
}
}
next || B10
|| Block B11
{inc i}
}
|| Block B12
{dump x} || B12
} || B13
{bar}
回避方法: {continue tag=out}
を呼び出す前に、 {do x}
を一度呼び出す(ここのx
は、問題の変数;またこの呼出は、既存コードへの悪影響がありません)。
Coreライブラリ
暗号化API利用時に、"CryptAcquireContext(暗号化) 失敗: アクセスが拒否されました。 (5)" のエラーダイアログが表示される場合があります
以下のフォルダに、Everyone グループに対して「特殊なアクセス許可」が付与されていない場合、暗号化API(例えばSessionKey のコンストラクタ)を呼び出す時に、"CryptAcquireContext(暗号化) 失敗: アクセスが拒否されました。 (5)"のエラーダイアログが表示される場合があります。
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
回避策:以下のコマンドを実行して、上記フォルダのEveryoneグループに「特殊なアクセス許可」を付与します。(必要に応じて管理者権限で実行します。)
icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /inheritance:e /grant Everyone:(RD,RA,REA,WD,AD,WA,WEA,RC)
Decimal.round-to-scaleメソッドのround-to-even?オプションは実装されていません
The Decimal.round-to-scaleメソッドには キーワード引数:round-to-even?がありまがこの引数は無視され 常に初期値であるtrueとして計算されます。
Curlソースコードの例
{value def v = 1.545i {v.round-to-scale 2, round-to-even? = false} }このケースでは、1.55を返す必要がありますが、1.54を返します。
GUIとグラフィックス
Windows10においてIMEパッドで正常に入力できない文字があります。
IMEパッドの「文字一覧」からUnicode(追加漢字面)などのサロゲートペア文字を選択した場合、Windows10では正常に入力されずに"??"と表示されます。
これはWindows10 May 2020 Update(Windows10 version 2004)でアップデートされたIMEの不具合によるものです。
回避策:Windows10のIME設定で、[以前のバージョンの Microsoft IME を使う]を有効にして、以前のバージョンのIEMを使用してください。
※ この問題はWindows 11 22H2 で発生しません。
Windows 11 22H2 では、 print-grpahic ( show-printer-dialog? = true) または Printer.open を orientationなどのパラメータを指定して呼び出す時に、表示される印刷ダイアログに該当パラメータの指定が反映されません。
Printer.get-printersを呼び出して取得したプリンター名リスト中の一部のプリンタは、印刷ダイアログに表示されるプリンタドロップダウンリストに表示されない場合があります。
- printer-name に指定したプリンター名は反映されず、通常使うプリンタに設定したプリンターが選択された状態で表示されます。
- orientation に指定した印刷の向きは反映されず、プリンターのデフォルト設定が選択された状態で表示されます。
- page-description に指定した用紙サイズが反映されません。
- to-page に印刷する最終ページを指定しても反映されません。
例えば2(from-page = 2)~3(to-page = 2)ページの範囲を指定した場合は "2-"と表示されます - 印刷ダイアログを表示して印刷する場合、古い見た目の印刷ダイアログで表示される場合があります。
上記不具合は、print-graphic を呼び出す時に show-printer-dialog? = false を指定した場合、問題ありません。
また、印刷ダイアログの表示・非表示に関わらず、パラメータ copies に 1 より大きい印刷部数を指定しても常に1部が印刷されます。
対応方法: この問題は最新の Windows 更新プログラムを適用することで解消します。
※ 「2023年11月14日 - KB5032189 (OS ビルド 19044.3693 および 19045.3693)」を適用したWindows11 22H2ではこの問題が発生しないことを確認しています。
RecordGridのセルを編集中に上下カーソルキーで他の行にフォーカスを移動した場合はセルの値が編集前の値に戻ります。
RecordGridのセルを編集中に上下カーソルキーで他の行にフォーカスを移動した場合はセルの値が編集前の値に戻ります。
Enterキーで入力中の値を確定した後に上下カーソルキーで他の行のセルにフォーカスを移動する場合にはこの問題は発生しません。
回避策:StandardStringCellを継承して、上下矢印キー押下時に入力中の値をレコードに保存する処理を追加したカスタムクラスを使うことで以前と同じような挙動にすることができます。下記サンプルコードをご参考ください。
{define-class public open MyStandardStringCell {inherits StandardStringCell} {method public {on-key-press ev:KeyPress }:void || make sure only Key UP or key DOWN is pressed {if (ev.value == KeyPressValue.up or ev.value == KeyPressValue.down) and ev.unmodified? then {super.commit-pending-value} } {super.on-key-press ev} } }
異なるスケール設定のマルチディスプレイ環境で、正常に表示されない場合があります
例えばメインディスプレイとは異なるスケール設定のサブディスプレイを利用する場合、Curlアプリケーションが異なるディスプレイ間で表示される場合、レイアウトが崩れる可能性があります。
回避方法:複数ディスプレイ利用される場合、同じスケール設定を利用するか、Curlアプリケーションをメインディスプレイ内でご利用ください。
print-graphic-pdfで作成したPDFファイルが破損する場合がある
IPAmjMincho フォントを指定した文字をprint-graphic-pdf でPDFファイルに出力する場合、出力したファイルが破損する可能性があります。
回避方法:print-grpahic-pdf プロシージャの代わりに、仮想PDFプリンター(例えば "Microsoft Print to PDF")で画面をPDFファイルに出力してください。
特定のハイフン(Unicode: \u2011, NON-BREAKING HYPHEN)が正しく印刷されない場合があります
print-graphicプロシージャやアプレット画面の印刷メニューからUnicode値\u2011のハイフンを含む文字列を印刷した場合、画面上では正常に表示されているにもかかわらず印刷結果に余分な空白が含まれる場合があります。
回避方法:\u2011以外のハイフン文字をご利用頂くか、Arial Unicode MS(Windows7の場合)、SegeoUI(Windows8.1以降)フォントを明示的に指定してください。
RecordGrid 利用時に、IMEの日本語変換中の文字がRecordGridの入力用セルに表示されない場合があります
RecordGridの属性edit-on-focus?をfalseに指定すると、すでにIMEをひらがな入力オンの状態で、RecordGrid内のセルを選択して、キー入力すると、IMEの変換が確定されるまで、セルに文字が表示されない。該当セルが編集状態になっていない為、上記現象が発生しています。
回避方法:下記の何れかになります
(1) edit-on-focus?=falseからedit-on-focus?=trueに変更して対応する。
(2) ダブルクリックなどで、セルにフォーカスを当て、カーソルが点滅表示されてから、文字入力してください。
イタリックの文字が欠けることがあります
どの文字もテキストレイアウトに最適な境界ボックスを持っており、また描画処理に最適な境界ボックスも持っています。Curl RTEは、これらの場合、テキストレイアウト用のボックスを使います。その結果、最初または最後の文字が僅かに欠ける時があります。同じ現象が殆どのウェブブラウザで見られます。
複数ロケールでのフォントの問題について
Curl RTEには3つのフォントエイリアス "serif"、 "sans-serif" 、"monospace" があります。Curl RTEはロケールに応じてこれらのフォントエイリアスを実際のフォントにマッピングします。
もし日本語文字列を表示させ、ロケールを英語に設定した場合フォントエイリアスは日本語文字列を含んでいないフォントに置き換えられてしまいます。このような文字は間違って表示され、”小さな四角” が表示されます。これはホストロケールが ”ja” でワーキングロケールが ”en” の場合に発生します。
Curlアプレットへのリンク上でCTRL+クリック または Apple キー+クリックしても新しいタブを開きません
PCでコントロールキーを押下したり、MacでAppleキーを押下しながらCurl アプレットへのリンクをクリックしても、 リンク先のアプレットは、新しいタブを開きません。
ファイル操作、I/O、OCC及びパーシスタントデータ
curl://occ は常にデフォルトブラウザで開きます
Windowsにおいて、OCCアプレット("curl://occ/...")は、 デフォルトではないブラウザのアドレス欄にurlが入力された場合でも、 デフォルトブラウザで開きます
127.0.0.1 が拒否されると強制終了します
ファイアウォールでIPアドレス127.0.0.1 を接続拒否に設定しないでください。Curl RTE と Curl IDEは、 内部利用の目的の為にこのループバック・アドレスを使用しています。 これらの製品は、このアドレスに対するアクセスがブロックされていると機能しません。
OS、ブラウザ及びサーバ問題
古いOS上でEdgeのIEモードでCurlアプレット(拡張子:.curl)を実行すると、RTEが異常終了される場合がある。
Windows 7およびWindows8.1でEdgeのIEモードでレガシーCurlアプレット(ファイル拡張:.curl)を実行する場合、
Edgeウィンドウを閉じる(Curlアプレットを終了する)とCurlRTEがクラッシュすることがあります。
Windows7及び8.1ではIEが継続してサポートされるので、EdgeのIEモードの代わりにIEを直接使用します。
<object>タグのDATAプロパティで指定されたパラメータはCurlアプレット内で受け取れない場合があります。
HTMLページに埋め込まれたレガシーCurlアプレット(拡張子:.curl) は、ページがIEではなくEdgeのIEモードで読み込まれる場合、 <object>タグのDATAプロパティで指定されたパラメータはCurlアプレット内で受け取れない場合があります。
<object type="text/vnd.curl" DATA="tags-headers-test.curl?display-html-tag" width=550 height=150></object>
回避策:次のように、PARAMタグを追加して、URLのパラメータ部分を指定します。
<object type="text/vnd.curl" DATA="tags-headers-test.curl?display-html-tag" width=550 height=150> <PARAM NAME="SRC" VALUE="tags-headers-test.curl?display-html-tag"> </object>
CurlのアプレットをWindows 10(バージョン 1607)で実行する場合、Basic認証ダイアログが表示された後にドラッグ&ドロップが動作しなくなる
CurlのアプレットからHTTP通信でサーバ側のデータへアクセスを行う際にBasic認証ダイアログが表示されると、ダイアログを閉じた後にドラッグ&ドロップが動作しない障害がWindows 10 バージョン 1607 (Windows 10 Anniversary Update)において発生する場合があります。
この障害は、Windows 10 バージョン1607の不具合が原因です。根本的な解決のためにはWindows 10が修正されるのを待つ必要がありますが、それまでの回避策としては下記の2つがございます。
1. Basic認証ダイアログを表示させない
2. Windows10 の最新版にアップデートしてください。
回避策 1.については、Basic認証に必要な認証情報(ユーザー名・パスワード)をあらかじめCurlアプレット側で入力させるダイアログを表示してユーザーに入力して頂き、set-http-authentication(プロシージャ)を使用して、HTTP アクセスに使う認証情報として指定することで認証ダイアログが表示されることを回避することが可能です。下記サンプルコードをご参考ください。
{set-http-authentication {url "<対象サイトのURL>"}, realm="basic", "<ユーザー名>", "<パスワード>" }
set-http-authenticationの詳細につきましては、Curlドキュメントの 「set-http-authentication (プロシージャ)」の項をご参照ください。
IEでCurlアプレットを含んでいるウインドウの中で起こるJavascriptの問題について
JavaScriptのwindow.openで呼び出されたウインドウでアプレットが開かれた際、ウインドウがすでに開かれている状態で再度window.openの呼び出さないない限り、window.closeを使用してもウインドウが閉じられません。
回避方法 : アプレットを含んだHTMLページがEMBED/OBJECT/IFTRAMEタグを使用して、window.openで開かれている場合、window.closeでウインドウを閉じることができます。Microsoftはこのバグを認識しており、将来のOSサービスパックで修正される予定です。
Curlファイルへのアンカー付リンクはIEで開くと失敗します
Curlアプレット内でのCurlアプレットであるファイルへのアンカー付リンクは有効に動作しません。
例えば、
{link {url "file:///c:/my-directory/document.curl#destination"} Click here!}
Internet Explorer は ”document.curl” へリンクしますが、 ”#destination” タグまでスクロールはしません。
Windows VistaでInternetExplorerのプロテクトモードの環境でCurlアプレットを起動した時にセキュリティ警告が出ます
Windows Vistaでieuser.exeが動作している状況でCurl RTE、Curl IDEをインストールし、Curlアプレットを起動すると以下のようなセキュリティ警告が出ます。
"A website wants to open web content using this program on your computer...."
回避方法:
- ieuser.exeプロセスが動作していない状況でCurl RTEをインストールする
- Curl RTEをインストールした後に再起動する
Internet ExplorerはCurl IDEからCurlアプレットを起動した場合、まだ起動中であると解釈されることがあります
Internet Explorerでタブブラウズ機能を無効にしてCurlアプレットを起動した場合、 起動が完了しているにもかかわらずInternet Explorerがまだ起動している途中の状態であると解釈して アイコンがアニメーションしたままになることがあります。
Curlアプレットをリロードすると起動中を示すアイコンが止まります。
Internet ExplorerのクイックタブビューでのCurlアプリケーションの表示について
Internet Exploreの制限によりInternet ExplorerのクイックタブビューでCurlアプレットを表示するとアイコンでしか表示されません
Curl コントロールパネル
CurlコントロールパネルはシステムトレイのCurlアイコンをクリックすることで表示することができます。Curlアイコンが表示されていない場合は、WindowsのスタートメニューからCurlコントロールパネルを表示することができます。
ホストとディレクトリの構文の正当性をチェックすることはできません
コントロールパネルにおける特権があるホスト名は有効にされません。
Curlコントロールパネルに入力した特権付ホスト名の構文をチェックする機能はありません。また、ホスト名の前には http:// が必ず付けられるので入力してはいけません。
ただし、空白が含まれるロケーションだけはチェックされ拒否されます。
Curlコントロールパネルで入力されたロケーションを編集することはできません
Curlコントロールパネルで特権付ロケーションを編集することはできません。入力されたロケーションを変更する場合、そのロケーションを削除し新規に追加します。