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

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

Curl外のURLを別ウインドウで開く

【ご質問】
Curl以外のURLを別ブラウザで開く際、新たに開かれるウインドウの
サイズやステータスバーの有無を制御することは可能でしょうか。

【回答】
残念ながらCurlから直接ブラウザウィンドウのサイズを制御することや
ブラウザウィンドウのステータスバー、メニューの表示などをコントロールすること不可能です。

Curlから別URLを別ウィンドウ(サイズ指定、ステータスバーの有無指定など)で開くのであれば、
Curlから一度、ウィンドウサイズ等の指定を行なうJavaScriptを含むページに遷移し、
そこから目的のページに遷移させてはどうでしょうか。

Curlアプレット(browse-urlプロシージャ使用)

JavaScriptを使用したページ(ウィンドウサイズ指定、ステータスバー指定など)

目的のページ

サンプルをご参照ください。
(JUMPボタンの処理内容、sample.html内の処理内容)

※JavaScriptを含んだページはブラウザのセキュリティ制限などによって自動的に実行されない場合があります。
  よってウインドウサイズが変わらない、自動的に遷移しないなどの挙動が見られる可能性があります。

TextDisplayフィールドの値のコピーについて

【ご質問】
TextDisplayフィールドの内容を選択し、クリップボードへコピーすることは可能でしょうか。

【回答】
残念ながらTextDisplayで表示させている値をマウスで選択して
コピーをすることは出来ません。
TextDisplayはあくまでも表示だけのコントロールであり、
表示されている文字を選択することも想定されておりません。

TextDisplayに似たような外観のTextFieldを作成して使用するのはどうでしょうか。
 TextField.editable? = false
と設定すると編集することは出来なくなりますが、選択することは可能です。

{TextField
    control-content-background = “#E0E0E0”,
    editable? = false,
    value = “This is TextField”
}

印刷用紙サイズの指定

【ご質問】
印刷時に使用する用紙サイズの変更を行いたいのですが、可能でしょうか。

【回答】
{print-graphic}プロシージャのpage-descriptionを指定することで用紙サイズの指定が可能です。

以下のサンプルを参考にして下さい。

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

{import * from CURL.GRAPHICS.PRINTER}
{value
    let pf:#PrintRootFrame
    let g:Graphic={Frame font-size = 15pt, width=1in, height=1in, background=“red”, “test”}

    ||get-page-descriptionでPrintPageDescriptionを取得する
    let ppds:#{Array-of PrintPageDescription} = {Printer.get-page-description
                                                    {if-non-null pn = {Printer.get-current-printer} then
                                                        pn else “”
                                                    }
                                                }
    ||用紙一覧を作成するためのデータモデル
    let size-model:DefaultListModel = {DefaultListModel {splice ppds}}
    ||用紙一覧を表示するリストボックス
    let list-box:ListBox = {ListBox
                               selection-policy = “single”,
                               width = 10cm,
                               height = 10cm,
                               data-model = size-model,
                               list-item-creation-proc = {proc {val:any}:ListItem
                                                             let ppd:PrintPageDescription = val asa PrintPageDescription
                                                             {return
                                                                 {ListValueItem ppd, label = ppd.description}
                                                             }
                                                         }
                           }

    let cb:CommandButton =
        {CommandButton label=“test printing”,
            {on Action do              
                set pf = {print-graphic g,
                             ||リストボックスで選択した用紙(PrintPageDescription)を設定する
                             page-description = list-box.value[0],
                             ||縦、横を設定する
                             orientation =PageOrientation.landscape                            
                         }
            }
        }
    let v:View = {View
                     {Frame width = 14cm, height = 10cm,
                         {VBox list-box, cb}
                     },
                     visibility = “normal”,
                     {on WindowClose do
                         {exit}
                     }
                 }
    {v.show}
}

尚、指定する用紙の文字列は”指定したプリンタが返す文字列”と必ず一致させる必要があることにご注意ください。
プリンタによっては、用紙の名称が半角や全角、空白を含むなど、同じ名称でも文字列が若干異なる可能性があります。
(例.”A4″(半角)と”A4”(全角))

正常に機能しない場合は、まずは印刷可能な用紙の種類や名称の文字列などの違いをご確認ください。

詳細は、APIリファレンスの
[CURL.GUI.BASE]-[print-graphic]
の項をご参照ください。

ウインドウを最前面に表示させる

【ご質問】
実行中のアプレットが他のウィンドウの下に隠れている場合でも、
一番前に表示させたいのですが可能でしょうか。

【回答】
独立型アプレット(.dcurl)であれば実現が可能です。

独立型アプレットは通常1つ以上のViewを作成する必要があります。
Viewクラスにはウィンドウを最上位に表示するためのraiseメソッドやset-topmostメソッドがあります。

Curlアプレットでイベントが実行される際にこれらのメソッドを呼びだすことで実現可能です。

詳細は、APIリファレンスの
[CURL.GUI.BASE]-[View]
の項内のメソッド[raise]及びに[set-topmost]の項をご参照ください。 

独立型アプレット呼び出し時のパラメータについて

【ご質問】
独立型アプレットを起動する際に、URLにパラメータを指定出来ますか。
また、その値をCurlアプレットから取得することは可能でしょうか。

【回答】
パラメータを指定して独立型アプレットを起動することは可能です。

また、Appletクラスのurlフィールドを使用することで起動時のURLを取得可能です。
{get-the-applet}.urlで起動するUrlオブジェクトが取得できます。

詳細は以下のサンプルと実行例をご参照ください。

1.以下のコードを記載した独立型アプレット(start.dcurl)を作成してWebサーバ上に配置して下さい。

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

{View
    {VBox
        {CommandButton
            label = “URL表示”,
            {on Action do
                let str = {get-the-applet}.url
                {popup-message str}
            }
        }
    },
    visibility = “normal”,
    {on WindowClose do
        {exit}
    }
}

2.以下のコードを記載したCurlアプレット(.curlファイル)を作成して実行して下さい。

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

{CommandButton
    label = “dcurl起動”,
    {on Action do
        {browse-url target = “_blank”,
            {url “curl://launch/http://[Webサーバのアドレス]/start.dcurl?foo=bar”}
        }
    }
}

3.「dcurl起動」ボタンを押すとstart.dcurlが起動します。
  start.dcurl上の「URL表示」ボタンを押すとパラメータ部分を含むURLが取得出来ていることが分かります。
379-2010-10-18-05-36-23.png

Curl RTEの自動更新について

Curl RTEの自動更新機能は、Ver.5.0.0にて追加され、Ver.4.0.0より自動更新の適用対象バージョンとなります。
また、自動更新は 無条件に更新されるのではなく、”セキュリティ上重要な問題のバグフィックスを含むリリース”
が存在する場合にのみ、自動更新される仕様となっております。

◆ご質問1◆
自動更新の対象バージョンは、古いバージョンも含むのでしょうか。
それとも最新のバージョン(現在はVer.7)のみでしょうか。

◆回答1◆
最新バージョンだけではなく、Ver.4以上が自動更新の対象となります。


◆ご質問2◆
端末に複数のメジャーバージョンのRTEがインストールされていた場合(ex 7.0.2, 5.0.3)、
全てのバージョンが自動更新の対象になるのでしょうか。

◆回答2◆
端末に複数のメジャーバージョンが存在した場合、全てのバージョンが自動更新の対象となります。


◆ご質問3◆
RTEの 5.0.3 のみがインストールされている端末で、自動更新を行った際、
Ver.5最新の5.0.7に更新されるような動作がありませんでしたが、何故でしょうか。

◆回答3◆
Ver.5.0.3⇒Ver.5.0.7への更新は、重要なバグフィックスを含んでいないため、自動更新対象ではありません。

尚、Ver.5での自動更新対象は以下のとおりです。
 現在のVer. ⇒ 更新されるVer.
 Ver.5.0.0 ⇒ Ver.5.0.2
 Ver.5.0.1 ⇒ Ver.5.0.2


◆ご質問4◆
[Curlコントロールパネル]-[更新]-[更新取得先 or インストーラ取得先]を
ブラウザで開いた場合に、www.curl.comに転送されるようになっておりますが、
この動作は仕様でしょうか。

◆回答4◆
www.curl.comに転送されるのは仕様です。

HTTPステータス:503

◆ご質問◆
アプレット起動時に「予期していないアプレット例外」(ステータスは503)が発生し、
キャッシュのクリア、Cookieの削除、ファイルの削除等行なっても改善されません。

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

◆回答◆
HTTPのステータスコード503は「Service Unavailable」であり、
一時的にレスポンスを返すことができない状態を意味します。

そのため、Curlアプリケーションがリクエストを送信して
どのようなレスポンスが(パケットレベルで)返却されているのかを調べてる必要があります。
その際にリクエスト時、送信されなければならないパラメータなどが
追加されているかどうかの確認もしなければなりません。

エラー発生時のパケットのキャプチャを行い、パケット内容の確認を行ってください。
また、このアプリケーションが動作しているサーバー回りの環境について、
ロードバランサやプロキシなどが使用されていないかの確認も行ってください。

CSVのデータ読み込み

◆ご質問◆
CSVRecordSet(CSVDataReader)のAPIを用いるとCSVのデータを読み込むことが可能ですが、
データとなる文字列中に「”」(ダブルクオーテーション)や「,」(カンマ)を含む場合は
どのようにエスケープすればよいのでしょうか。

また、Tab区切りを使用したファイルの読み込みは可能でしょうか。

◆回答◆
CSV形式では、ダブルクォーテーション「”」、カンマ「,」、改行を含むフィールドが存在する場合、
そのフィールドをダブルクォーテーション「”」で囲み、エスケープを行う決まりとなっております。
(ダブルクォーテーション「”」のエスケープの場合はダブルクォーテーション「”」を2つ並べてエスケープする。)

その為、「”aaaa”」と表示させる場合は「”””aaa”””」、
「bb,bb」と表示させる場合は「”bb,bb”」とCSVファイルに記述する必要があります。

また、Tab区切りを使用したファイル(TSVファイル)の読込みは標準APIでは行えません。

ファイル保存ダイアログのキャンセルボタン制御

【ご質問】
FileDialog, choose-fileプロシージャなどを使用して
ファイル保存ダイアログを使用する際に、
ダイアログのキャンセルボタンと、右上の「×」(閉じる)ボタンを
非活性にすることは可能でしょうか。

【回答】
Curlの標準APIを用いてファイルダイアログのキャンセルボタン及びに
「x」(閉じる)ボタンを非活性にすることはできません。

FileDialogクラスやchoose-fileプロシージャによって呼び出されるダイアログは、
ホストOSの標準ファイルダイアログとなります。
Curlにはそのダイアログに対して、キャンセルボタンや「×」ボタンを非活性にする
という設定を行うための標準APIがありません。

ZlibExceptionについて

◆ご質問◆
起動ファイル(start.curl)を実行するとZlibExceptionが発生しました。
ZlibException発生の原因は何であると考えられるでしょうか。

◆回答◆
発生したタイミングが起動ファイルを開いてから(Curlアプレットが起動し始めてから)
画面が表示されるまでの間に発生したということのようですで、
おそらくパッケージをimportしようとして、このExceptionが発生したと思われます。

「パッケージファイルが意図しないものであった」、
「パッケージファイルの中身が空で返却された」などが考えられ、
適切でないパッケージファイルが返却されたためZlibExceptionが発生したと思われます。

原因を明確にするために、パケットキャプチャツール等を利用して返却されるパケットの中身をご確認ください。

パーシスタントデータの削除

【ご質問】
パーシスタントデータは何をトリガーにして削除されるのでしょうか。

また、Curl RTEをアンインストールしてもパーシスタント領域は
削除されないとのことですが、その場合自動では永久に削除されないのでしょうか。

【回答】
現在の仕様では、リポジトリへ最後にアクセスしてからdurationの期間が過ぎた後、
再度リポジトリにアクセスした際に削除されます。

また、Curl RTE がアンインストールされた場合、
パーシスタントデータを消すべき役割のプログラム(Curl RTE自身)が
アンインストールされているため、パーシスタントデータは自動的に削除されません。
(自動的に削除することが不可能となります。)
この場合は、手動で削除しなければなりません。

RecordGridの選択行の色について

【ご質問】
RecordGridの選択行の色を任意のカラーに変更することは可能でしょうか。

【回答】
RecordGridの選択行やDropdownListのリスト選択項目などの色はOSの設定に依存しています。
Curl自身で任意の色に設定するような機能・APIは現在のところ提供されておりません。

参考情報(Windows7の場合):
以下の設定内容を変更することでRecordGridの選択行の色などが変わります。
 デスクトップ上で右クリックして[個人設定]-[ウィンドウの色]-[デザインの詳細設定]
 を選択後[ウィンドの色とデザイン]ダイアログ内の「選択項目」の色

372-recordgrid.png

StreamCorruptedExceptionについて

◆ご質問◆
アプリケーション起動時にStreamCorruptedExceptionが発生します。
(StreamCorruptedException: Internal serialization error: Bad magic number )
発生する原因は何でしょうか。

◆回答◆
StreamCorruptedExceptionはパーシスタントデータが何らかの理由で壊れた場合に発生します。

下記のようなことが考えられますが、根本的な原因は不明です。
 ・パーシスタントデータが記述されているファイルなどの内容が消去された
 ・ユーザーが誤ってファイルを書き換えた
 ・ファイルへ記述している途中でPCの電源が落とされた

QRコードについて

【ご質問】
CurlでQRコードを作成することは可能ですか。

【回答】
CurlでQRコードを作成する標準APIは用意されておりません。

QRコードの仕様については、国家規格や国際規格で規格化されており仕様の入手も可能です。
Curlを用いてQRコードを作成する実装は可能かと思われます。

特権ホスト設定について

◆ご質問◆
RTEのCurlコントロールパネルでホスト追加を利用して特権ホストを追加する際に,
複数のホストを一括で登録することは可能でしょうか。

例)ワイルドカード等を用いて複数ホストの指定するなど。
xxxx1.aaa.co.jp → *.aaa.co.jp
xxxx2.aaa.co.jp

◆回答◆
コントロールパネルのホスト追加を利用しての複数ホスト一括登録はできません。
また、ワイルドカード等を利用しての複数ホストの指定も不可能です。

IDEで展開できるファイル数

◆ご質問◆
Curl IDEを利用するに当たって1プロジェクト内で展開可能なファイルの上限数はありますか。

◆回答◆
IDE内で開けるファイルの上限はありません。

ただ、PCのメモリなどの制限などによりファイルが開けなくなる可能性はあります。
勿論、これはCurlに限ったことではありません。
また、IDE内で表示されるファイルはタブで表示されているので多量のファイルを同時に開いた場合は、
パフォーマンスが悪くなる可能性もあります。

OpaqueSecurityExceptionについて

【ご質問】
独立型アプレット起動時にエラーとなり、以下のメッセージが出力される。

===================================
独立型アプレット ‘http://[URL]/start.dcurl’ をロードできませんでした:
SyntaxError: http://[URL]/start.dcurl: 既定のマニフェストをインポートできません:
OpaqueSecurityException: http リクエストまたは他のネットワーク接続を作成しようとしていたときに、
セキュリティ エラーが発生しました。
===================================

【回答】
(1) 信頼できるアプレット又は特権アプレットとして起動する場合、以下の項目について確認を行ってください。
・アプレットの特権設定が正しく設定されているか

(2) 非特権アプレットとして起動する場合、以下の項目について確認を行ってください。
・curl-access.txtの記述に問題がなく、適切な場所に配置されているか

(3) 上記(1)、(2)について不明な場合、貴社のシステム管理者またはご利用アプレットの提供元にお問い合わせください。

仮想環境上での動作について

◆ご質問◆
CurlはVMwareなどの仮想環境上で動作するのでしょうか。

◆回答◆
CurlはVMwareなどの仮想環境上での稼動実績はありますが、動作保証は行なっておりません。
Curlを仮想環境上で使用される場合は、十分にテストを行った上でご使用ください。

Curl/Pro IDEライセンスキーについて

【ご質問】
Curl/Pro IDE のライセンスキーの扱いに関して、
ライセンスキーはバージョン6・7・8とでそれぞれ異なるのでしょうか。

また、アクティベート手順はバージョンによって異なるのでしょうか。

【回答】
Curl/Pro IDE のライセンスキーは、バージョン6・7・8で共通です。
ライセンスキーは、PC(マシン)に紐付けされます。

例えばバージョン6のCurl/Pro IDE がインストールされている環境に、
バージョン7のIDE をインストールすると、アクティベートを再度行うことなく
そのままバージョン7のCurl/Pro IDE として利用することができます。
その後、バージョン7のIDEをアンインストールした場合も、
そのままバージョン6のCurl/Pro IDE として利用出来ます。

アクティベート手順はバージョン6・7・8で共通です。

メール本文のURLからのシステムログイン

◆ご質問◆
メール本文中にシステムURLを記載し、その記載されたURLをクリックすることでシステム画面を表示したいのですが、
システムURL「curl://launch/~」はメーラーがURLだと認識しないため実現できません。
メール記載のURLからシステムにログインすることは可能でしょうか。

◆回答◆
「curl://~」で始まるURLはメーラーで認識することはできません。

メール本文に記載するリンク先をHTMLファイルにして、そのファイル内で
JavaScriptやmetaタグなどを利用してリダイレクトを行うことで実現が可能です。