ファイル管理
CindyScriptでファイル操作を行なういくつかの方法があります。しかし、これらのコマンドはHTMLページのアプレットでは動作しないことを注意してください。
データの読み込み
ディレクトリを設定する: setdirectory(<string>)
説明: この演算子は、これ以降のファイルのディレクトリを設定します。ファイルの読み書きをするときは、対象となるディレクトリを設定してから行ないます。設定しない場合はエラーとなります。
例: Windowsでデスクトップにディレクトリを設定する場合、たとえば
setdirectory(C:¥Documents and Settings\ユーザー名\デスクトップ);
のようにします。デスクトップのディレクトリは、Windowsのバージョンによって異なりますので確かめてください。
Macintoshの場合も同様ですが、 Cinderella をデスクトップに置いてあれば
setdirectory("../../../../");
でデスクトップを指定できます。Cinderellaがあるのと同じフォルダです。
データの読み込み: load(<string>)
説明: この演算子の引数
はファイル名とします。ディレクトリ名を含んでも構いません。 ファイル名が正しければ、ファイルに含まれる全情報が文字列として返されます。この演算子は
tokenize
とともに、データを解析するのに有用です。データは
setdirectory
で指定されたディレクトリから読まれます。
例: ファイル
LoadDemo.txt
には次のデータが入っているものとします。
abc,gfdg;1,3,5.6,3.141;56,abc,xxx,yyy
次のコードは、データを読み込んで ";" と "," によりトークン化されたリストを作ります。
x=load("LoadTest.txt");
y=tokenize(x,(";",","));
apply(y,println(#));
結果として次のものを出力します。
[abc,gfdg]
[1,3,5.6,3.141]
[56,abc,xxx,yyy]
プログラムコードの読み込み: import(<string>)
説明: この演算子の引数
はファイル名とします。ディレクトリ名を含んでも構いません。ファイル名が正しければ、ファイルの内容は
CindyScript のコードとして解析され、実行されます。こうして、あらかじめ定義された関数ライブラリを読み込むことができます。
import
演算子は CindyScript の "Initialization" スロットだけで運用するのがよいでしょう。そうでないと、動作のたびに読み込まれることになります。
ファイルへの書き出し
Cindy script のスクリプトをファイルへ書き出すこともできます。よく使われるのは次の手順です。
- 1. setdirectory()関数を用いてディレクトリを指定する。
- 2. ファイルを開く
- 3. ファイルに書く
- 4. ファイルを閉じる
これは次の命令で行ないます。
ファイルを開く: openfile(<string>)
説明: 指定した名前のファイルを開きます。戻り値はprint命令で必要なファイルハンドルです。
ファイルに書いて改行する: println(<file>,<string>)
説明: println(...)
と同様ですが、
<file>
で指定したファイルに書き出します。
ファイルに書く: print(<file>,<string>)
説明: print(...)
と同様ですが
<file>
で指定したファイルに書き出します。
ファイルを閉じる: closefile(<file>)
説明: ファイルを閉じます。
例: 次の例は、ファイルに書き出す一連の手順を示します。:
setdirectory("../../../../");
f=openfile("myFile");
println(f,"Here are some numbers");
forall(1..15,print(f,#+" ");
println(f,"");
closefile(f);
これにより、次のような内容のファイルが作られます。:
Here are some numbers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
HTMLとの連携
Webページを開く: openurl(<string>)
説明: <string>のWebページをブラウザで開きます。
javascriptを呼びだす: javascript(<string>)
説明: 書き出されたアプレットにおいて、ブラウザの Javascript 環境での命令を呼びだします。この命令の内容は
<string>
に書きます。スタンドアロンのアプリケーションでは何もしません。
例: 次のコードでは、ブラウザ上にポップアップウィンドウを表示してメッセージを出します。
javascript("alert('Hi from Cinderella!!')");
ネットワーク
シンデレラでの TCP コマンドはほんの簡単なものだけです。しかしネットワークの基本的な機能はあります。インターネット上でデータを送受信することができるはずです。
TCP ポートを開く: openconnection(<string>,<int>)
説明: 第1引数で指定されたサーバーへのTCP接続を行い、第2引数で指定されたポートを開きます。戻り値は、このネットワーク接続へのハンドルです。
TCP へ書きだす: print(<handle>,<string>)
TCPへ書きだす: println(<handle>,<string>)
説明: print
と
println
関数は、ファイルだけでなく
openconnection
によって作られるネットワークへも書き出しを行ないます。
TCP ポートへの出力と消去: flush(<handle>)
説明: 与えられた接続への出力バッファを消去します。
TCP 接続からの読み込み: readln(<handle>)
説明: 与えられた接続から行を読みます。もしデータがなければ5秒後にタイムアウトします。
TCP 接続を閉じる: closeconnection(<handle>)
説明: 与えられたハンドルの接続を閉じます。
例:次のコードでは、Webサーバを開いて、そこからHTMLコードを読み出します。
x=openconnection("cermat.org",80);
println(x,"GET /");
y="";
while(!isundefined(y),y=readln(x);println(y));
closeconnection(x);