「FAQ」カテゴリーアーカイブ

Curlに関するFAQのページです

バージョン間による使用メモリの制限

【ご質問】
CurlRTEのバージョンによって使用可能なメモリの上限は異なるのでしょうか。

【回答】
特権のないアプレットにおいては、CurlRTEのバージョンによって
Curlアプレットが使用可能なメモリの上限が異なります。

詳細はCurl開発者ガイドの
[コンテンツの構成要素]-[セキュリティ]-[システムの制限]
の項をご参照ください。
(バージョンによってはCurl開発者ガイドの項名が若干違います。)

実行するOSにより外見が異なる

【ご質問】
Windows7環境とWindowsXP環境では、実行結果の画面表示が異なります。
OSが異なっても同一の画面表示を行う事は可能でしょうか。

【回答】
異なるOS上(バージョンの違いも含む)で、完全に外見を同じにすることは
非常に困難です。

例えば、同じWindowsでもバージョンが違うと、
デフォルトフォントやフォントサイズが違う場合があります。

今回のようにWindows XPと7の場合、
 ・WindowsXPのデフォルトフォントは「MS UI Gothic」で
  Windows7のデフォルトフォントは「メイリオ」に設定されています。
 ・XP、7共に搭載はされていますが、ClearTypeの影響が考えられます。

Curlアプリケーションでフォントやサイズの指定を行わない場合、
OSのデフォルトフォントなどの影響もあり、アプリケーションの外見にも影響を与えます。

また、仮に全てのテキストにフォント・フォントサイズの指定を行ったとしても、
OSにインストールされているフォントのバージョンの違いなどで
字体が異なる可能性もあり、外見が同じになるとは限りません。

このようにCurlアプリケーションの外見はOSの設定に大きく依存し、
これをOSの設定に依存せずCurlだけでの表示を行うことは出来ません。
ユーザの実行環境としてWindowsXP、Windows7など複数の環境が存在する場合、
どちらの環境でも見た目上不具合が出ないようにレイアウトを調整するか、
クライアントのOSを判断し、そのOSに応じてレイアウトを変更する必要があります。

以下のページもご参照ください。
http://developers.curlap.com/faq/49-faq-operation/766-font-standard.html

タブの遷移順

【ご質問】
Curlとして部品にタブインデックスがない場合、どのような動作をする仕様なのでしょうか。
どのような順序でフォーカスが移動しているのでしょうか。

【回答】
タブインデックスがない場合(同じインデックス値を持つ場合)、タブ順序はグラフィカルコンテナの定義に従います。
例えばVBox 内では、トップレベル オブジェクトの既定のタブ順は上から下、HBox内では左から右です。

詳細は、Curl開発者ガイドの
[グラフィカルユーザーインターフェース]→[ダイアログとコントロール]→[ダイアログの使用]
の項をご参照ください。 

JavaScriptの関数呼出しについて

【ご質問】
Curl 7.0の独立型アプレットからJavaScriptの関数を呼ぶことが可能でしょうか。

【回答】
Curlの独立型アプレット内にEmbeddedBrowserGraphicクラスを利用して
埋め込まれたHTMLかつ、そのHTML内で定義されたJavaScriptならば呼ぶことが可能です。

詳細は、Curl開発者ガイドの
[はじめに]-[バージョン7.0の新機能]
の項をご参照ください。
(バージョンによって場所が少し違います。バージョン8以降では
[はじめに]-[前のバージョンからのアップグレード]-[バージョン7.0の新機能]
の項をご参照ください。)

また、APIリファレンスの
[CURL.GUI.EMBEDDED-BROWSER]-[EmbeddedBrowserGraphic]
の項とメソッド[execute-script]・[execute-script-string]の項をご参照ください。

ドラッグ&ドロップによる値の修正を制御するには

【ご質問】
TextField等入力可能なコントロールに対して、
ドラッグ&ドロップによる値の修正を制御することは可能でしょうか。

【回答】
TextFieldUIクラスのon-drop、on-drag-over、on-drag-startedメソッドを
オーバーライドし、ドラッグ&ドロップ時の処理をさせないようにすることで実現可能となります。

詳細は以下のサンプルをご参照ください。
(グラフィック階層の違いにより下記サンプルはバージョン6以前では動作しません。)

{curl 7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{define-class public NoMoveTextFieldUI {inherits SkinnableTextFieldUI}
  {constructor public {default …}
    {construct-super {splice …}
    }
  }

  {method public open {on-drag-started e:DragStarted}:void
    {if not e.consumed? and
        self.enabled? and
        self.input-method-info == null
     then
        {self.start-dragscroll e, start-leaf = self.string-graphic}
        {e.consume}
    }
    {super.on-drag-started e}
  }

  {method public {on-drop e:Drop}:void
    {e.consume}
  }
 
  {method public {on-drag-over e:DragOver}:void
    {e.consume}
  }
}

{Table columns = 2,
    “ドラッグ&ドロップで切り取り、挿入ができない”,
    {TextField
        ui-object = {NoMoveTextFieldUI},
        value = “0123456789”
    },
    “通常のTextField”,
    {TextField
        value = “ABCDEFGHIJK”
    }
}

エラーメッセージ:「~送信に失敗しました:サーバーに接続できませんでした (12029)」

【ご質問】
アプリケーションの起動時に予期していないアプレット例外が発生し、
「Error: HttpException: “URL~”の送信に失敗しました:サーバーに接続できませんでした (12029)」
というメッセージが出力されました。

アプレット例外が発生する原因として、どのようなことが考えられるでしょうか。

【回答】
表示されている”12029″はCurlより呼び出しているWindowsAPI(WinInet)のエラーコードです。

該当の端末からCurlアプレットが配置されているWebサーバに対し、
何らかの理由によりアクセスすることができなかったため発生したと考えられます。

まずは、該当の端末からCurlアプレットが配置されているWebサーバに対して、以下の確認を行ってください。

 [確認項目]
  ・pingコマンドでWebサーバとネットワークレベルで接続されているか
  ・他のWebサイト(yahooやgoogle等)を見ることはできるか
  ・パーソナルファイアウォールやアンチウィルスソフトなどのセキュリティソフトはインストールされているか
   ※インストールされている場合、Curl関連のプロセスが遮断される設定になってはいないか
  ・Curlの配置してあるWebサーバにアクセスするためにはプロキシの設定が必要ではないか
  ・Curlアプレットが配置してあるWebサーバで該当の端末を使って表示できないコンテンツはCurlアプレットのみか
   ※例えば、HTMLファイルを”http://[該当アプレットが配置してあるURL]/test.html”の様に配置して
    アクセスすると正常に表示されるか

このエラーが発生する場合、ネットワークやOSの設定を見直すことで回避可能なケースが多くございます。

 

エラーメッセージ:「~送信に失敗しました:(12057)」

◆ご質問◆
アプリケーションの起動時に予期していないアプレット例外が発生し、
「Error: HttpException: “URL~”の送信に失敗しました(12057)」というメッセージが出力されました。

アプレット例外が発生する原因として、どのようなことが考えられるでしょうか。

◆回答◆
CurlではWininetの通信メカニズムを用いております。
今回頂いたHttpExceptionはCurl独自で作成したものではなく、
OS側より発生したエラーをCurlが受け取りスローしております。

表示されている”12057″は、
「ERROR_INTERNET_SEC_CERT_REV_FAILED」であり、
ブラウザが証明書失効リスト(CRL)を配布しているサーバに接続できず、
CRLを確認できないことを示しています。

原因はこの証明書失効リストを確認できず、サーバ証明書の正当性が証明されなかったため、
このサーバからのコンテンツを取得できなかったものと思われます。

この現象を回避するには、以下のことが挙げられます。
 ・証明書失効リストを確認しないように設定する
 ・証明書失効リストを配布しているサーバに接続できるようにする

「証明書失効リストを確認しないように設定する」は、
具体的には、インターネットオプションの
「詳細設定」→「サーバー証明書の取り消しを確認する」のチェックを
外すことを意味します。

また、マイクロソフトのサイトにも関連性のある情報がございます。
http://support.microsoft.com/kb/896219/ja

httpsを利用している場合で
[暗号化されたページをディスクに保存しない]を有効にしている、
または、http、httpsを問わず、サーバーがCache-Controlヘッダを利用して、
キャッシュを保存させないようにしている場合は、
ファイルのダウンロードに失敗します。

http://support.microsoft.com/kb/969608/ja

Active Directory の権限管理サービスで保護されているコンテンツを
作成や開くことができず、エラー コード 12057 が記録されます。

 

 

JIS2004問題について

◆ご質問◆
Windows7環境において、Curlを使用した場合JIS2004問題は発生するのでしょうか。

◆回答◆
Curlがサポートしている文字コード規格はJIS X 0208:1997(JIS97)であり、
JIS X 0213:2004(JIS2004)で追加された文字に関してはフルサポートされているわけではありません。
(拡張された文字が正常に表示・入力・削除などの処理が行われない可能性があります。)

一般的にこれらの問題はCurlアプリケーションの問題というより、
OS間で対応する文字セットに関する規格が違うために発生するため、Curlアプリケーション内から対応することは出来ません。

【JIS2004問題】
 ・WindowsXPとWindows7(Vista)で表示される文字の字形が異なる
 ・JIS X 0213:2004(Windows7、Vista)で追加された文字がWindowsXPで表示できない
 ・追加された文字はUnicodeでしか扱えない

Curlからのサーバコネクション数制御について

◆ご質問◆
1台のCurlクライアントからは、常に1つのNWポートを利用した1コネクションのみの通信とするように、
Curlで制限をかけることは可能でしょうか。

◆回答◆
Curlで通信を行う際の1サーバあたりの同時接続数は”2″です。
正確には、Curlが通信を行う際のWinInetのモジュール毎に同時接続数が”2″となっています。

WinInetはCurlの各バージョンで一つ使用されています。
よってアプレットごとに同時接続数が”2″ということではなく、
例えば、Curl RTE 7.0のアプレット全てで同時接続数が2ということになります。

また、この接続数”2″はCurlの内部で定義されていることから外部から制御することはできません。

また、Microsoftのhttp://support.microsoft.com/kb/282402/jaにあるような
レジストリの値を参照することもしておりません。

MessageDisplayの色指定

【ご質問】
MessageDisplay使用時に以下のように色を任意に設定することは可能でしょうか。
 ・入力チェックエラー…ピンク色
 ・必須項目…薄緑色
 ・通常項目…薄黄色

【回答】
MessageDisplayの”show-colors”メソッドを改変することで実現可能です。

詳細はサンプルをご参照ください。

また、APIリファレンスの
[CURL.GUI.CONTROL-VALIDATION]-[MessageDisplay]
の項内のメソッド[show-colors]の項をご参照ください。

Curl RTEインストールエラー

◆ご質問◆
Curl RTEインストール時に以下のエラーメッセージが表示される。。
 
「Throwing unexpected: Error: Failure in ‘registry-set-string’.
  *** Error encountered: Error: Failure in ‘registry-set-string’.
  To dismiss this window, press the ‘enter’ key.」

◆回答◆
Administrator権限でインストールを行われていない可能性があります。
権限の確認をお願いいたします。

Administrator権限で行われているにも関わらず、インストールできない場合は下記項目をご確認下さい。
 ・システム要件を満たしているか。
 ・常駐アプリを全て終了しているか。
 ・アンチウィルスソフトを無効にしているか。

エラーメッセージ:「対処されていない C++ の例外がスローされました。」

◆ご質問◆
CurlでSHELL32を使用してファイルを開くプログラムを実行すると、Exceptionが発生し、
「対処されていない C++ の例外がスローされました。」とのメッセージが出力される。
※エクセルのマクロでSHELL32を使用してファイルを開くプログラムを実行すると正常に開かれる。

Exception発生の原因としてどのようなことが考えられるでしょうか。

◆回答◆
「対処されていない C++ の例外がスローされました。」
このメッセージはWinAPI側(shell32)に問題があって、Curlがスローしているものと推察されます。

原因としては以下のようなことが考えられます。
 ・開こうとするファイル名称、パス等に特殊な文字が使われている
 ・拡張子と実行プログラムの関連付けがおかしくなっている
 ・実行しようとするアプリケーション、
  または、アプリケーションにリンクしているライブラリが壊れている

エラー情報の確認を行うには

【ご質問】
エラーが発生した場合、エラーが発生した箇所を特定する情報を
取得する方法はあるのでしょうか。

【回答】
エラー情報を特定する方法はいくつか存在します。

①スタックトレースの確認
 メッセージ(「予期していないアプレット例外」etc…)の詳細ボタンを押下すると、
 スタックトレースが表示されますので、その情報をご確認ください。

②コンソール出力
 outputプロシージャ等を用いることで、デバック情報を確認することができます。
 詳細は、Curl開発者ガイドの
 [外部リソースとの対話]-[ファイルやその他のリソースへのアクセス]-[コンソール出力]
 の項をご参照ください。 

③デバックモードの実行
 Curl RTEの[デバッガ]タブ内でロケーションの追加をすることで
 デバッグモードで実行することができます。
 詳細はCurl コントロールパネルの
 [ヘルプ]-[デバッガ]
 の項をご参照ください。

 また、場合によってはCurl IDEの設定を行う必要がございます。
 詳細は、CurlIDEユーザーガイドの
 [Curl統合開発環境(IDE)のイントロダクション]-[Curl IDEメインウインドウ]-[IDEのユーザー設定]
 の項をご参照ください。 

Curlの通信のメカニズム

【ご質問】
アプリケーションサーバ側のCurlアプリケーションをアップデートした時には
Proxyサーバ上のキャッシュを無視して
必ずアプリケーションサーバからモジュールを取得したいのですが可能でしょうか。

【回答】
Curlだけで制御することは困難です。

Curlは通信のメカニズムとして独自の通信メカニズムを
使っているわけではないため、クライアントサイドの設定を用いることができます。
例えば、
 インターネットプロパティにてプロキシを使わない 設定をすることや
 PACファイルと呼ばれるブラウザのプロキシ設定を制御できる仕組み
を用いることができます。

また、サーバサイドにて、Cache-Controlを用いるなどして
制御することも可能です。

これらを用いることでProxy上にキャッシュしないようにすることが
出来るのではないでしょうか。

Curlのプロセス

【ご質問】
Curl起動時に下記プロセスが 実行されています。
これらのプロセスはどのようなものかお教え下さい。
・surge.exe
・surge-lab.exe
・curl-eng.exe

【回答】
各プロセスについては次の通りとなっております。

・surge.exe
Curlのマスターエンジンのプロセスです。
アプレットの起動やIDEの起動で必ず実行されます。

・surge-lab.exe
SurgeLabのプロセスです。
開発環境CurlIDEの起動で実行されます。

・curl-eng.exe 
Curlのヘルパーエンジンのプロセスです。
端末にインストールされている最上位のバージョンが
(例えば、3.0.10と4.0.6がインストールされている場合4.0.6)
マスターエンジンとなります。
マスターエンジン以外のバージョンのアプレットを実行すると、
(上記例の場合、バージョン3.0のアプレット)
マスターエンジンからこのヘルパーエンジンが呼び出されます。

以下のFAQもご参照ください。
http://developers.curlap.com/faq/49-faq-operation/663-rte.html

surge-do.exeとは

◆ご質問◆
「surge-do.exe」は何をしているプロセスなのでしょうか?
 
◆回答◆
surge-do.exe は、curl: で始まるURLや、.curl / .dcurl のファイルから
Curl RTE や IDEを起動させるためのプログラムです。
スタートメニューから起動させるためにも使用されます。

また”surge-do”というコマンドでCurlのラインタイムの起動や停止などいろいろ操作することができます。
詳細は以下サイトをご参照ください。
http://developers.curlap.com/re-reference/19-others/61-startup-shutdown.html

Curl Pro/IDEライセンスキー(マシンコード)

◆ご質問◆
 PCをFormatし直すと、マシンコードも変わるのでしょうか?
 そのようになったらIDEのライセンスキーも更新しないといけないでしょうか?
 
◆回答◆
 マシンコードが変わる場合があり、IDEのライセンスキーの
 再申請が必要になる場合があります。

 OSの再インストールを行うと、Windowsのライセンス認証を
 再度行う必要があります。
 この際にマシンコードが変わる場合があります。

 また、PCのフォーマット、OSの再インストールを行わなくとも、
 HDDなどを交換しハードウェア構成が変更されると、
 Windowsのライセンス認証を要求された場合にもマシンコードが
 変わる場合があります。

 

アプレットの監視

◆ご質問◆
 Curl Ver.6にて作成した独立型アプレットについて、
 アプレットが起動しているかを外部のプログラムから監視することは可能でしょうか?
 
◆回答◆
アプレットマネージャで画面上でなら確認することはできますが、
標準APIやsurge.exeの公開されているインターフェースは存在しておらず、
残念ながらご要望を満たすことは不可能でございます。

ただ、ファイルに書き出すなどの仕組みを利用して
アプレットが起動しているかどうかの判別はできるかと思います。
例えば、独立型アプレットが起動したらファイルに起動した旨を書き出し、
アプレットが終了したらそのファイルに終了した旨を書くというような
ことをし、外部プログラムはそのファイルの状態を確認することで
独立型アプレットが起動しているかどうかの判別を行います。

「Could not start ‘surge.exe’」というエラーについて

【ご質問】
SurgeRTEをインストール後、Curlアプリケーションを起動しようとしたところ、
起動できないという現象が発生しました。

Curlコントロールパネルを起動しようとしても、「Could not start ‘surge.exe’」
とメッセージが表示され起動できません。

また、「コントロールパネル-プログラムの追加と削除」よりアンインストール
しようとしたところ、アンインストールが実行されません。

この現象の原因と対処法を教えて頂けますでしょうか?

【回答】
「Could not start ‘surge.exe’」というエラーが発生する要因としては
過去の事例からは以下のことが考えられます。

1.インストールに失敗している
なんらかの原因でインストールに失敗している可能性があります。
例.administrator以外の権限でインストールを行った。
→Curlを一度アンインストールした後、再度インストールを行うことで
  現象が解消することがあります。
  アンインストールが正常に実行できない場合は以下のページを参考に
  手動アンインストールを実行してください。
  http://developers.curlap.com/faq/50-faq-not-expectation/790-manual-uninstall-winxp.html
  http://developers.curlap.com/faq/50-faq-not-expectation/789-manual-uninstall-win7.html

  その他インストール時の注意点に関しては、下記のページをご参照ください。
  http://www.curlap.com/download/rte/installation.html

2.セキュリティソフトの影響を受けている
ウイルス対策ソフト・パーソナルファイアーウォールなどのセキュリティソフトの
影響を受けている可能性があります。
例.セキュリティソフトがCurlを起動するために必要なファイルをロックしている。
→セキュリティソフトを無効化して現象が解消しないか確認することで切り分けできます。
  セキュリティソフトのログなどを確認することで結うような情報が得られる場合もあります。

3.(WindowsVista・7・8)UACの影響を受けている
WindowsOSのUAC(ユーザーアカウント制御)の影響を受けている可能性があります。
→UACを無効化して現象が解消しないか確認することで切り分けできます。

特権の設定(ワイルドカード)

◆ご質問◆
特権の設定についてお伺い致します。
ホストの追加にて、ワイルドカードのようなものは使用可能でしょうか。

【特権が必要なホスト】
curl.zzz.com
curl2.zzz.com
【指定方法】
*.zzz.com
または、
zzz.comのみ

上記のように設定してもエラーになってしまいます。
何かよい方法がございましたら、
ご連絡をよろしくお願い申し上げます。

◆回答◆
特権ホストの追加に際してはワイルドカードはご利用頂けませんので、
個別にホスト名を指定して頂く必要があります。