「Open」の版間の差分
編集の要約なし  | 
				編集の要約なし  | 
				||
| (同じ利用者による、間の2版が非表示) | |||
| 6行目: | 6行目: | ||
; 機能  | ; 機能  | ||
: LISPの入出力関数がアクセスできるようにファイルを開く。  | : LISPの入出力関数がアクセスできるようにファイルを開く。  | ||
: BricsCAD の LISP では、UTFおよびユニコード形式のテキストファイルの作成/読み取り/書き込みが可能なように拡張されている。(V17以降)  | |||
: これは、クロスプラットフォーム開発(Linux + OSX)、または特殊な目的(例:HTMLファイルの読み込みと書き込み)に便利。  | |||
: AutoLISPとの後方互換性を保つために、mode引数はUTF/Unicode形式を指定するように拡張された。  | |||
| 11行目: | 14行目: | ||
:* filename : 開くファイルの名前と拡張子を指定する文字列。ファイルの完全パスを指定しなかった場合、スタートアップディレクトリを指定したものとみなされる。  | :* filename : 開くファイルの名前と拡張子を指定する文字列。ファイルの完全パスを指定しなかった場合、スタートアップディレクトリを指定したものとみなされる。  | ||
:* mode : ファイルを読み込みモード、書き出しモード、追加モードのいずれで開くかを指定する。次の文字のいずれか 1 つを含む文字列を指定する。  | :* mode : ファイルを読み込みモード、書き出しモード、追加モードのいずれで開くかを指定する。次の文字のいずれか 1 つを含む文字列を指定する。  | ||
::* r : 読み込みモードで開く。  | ::* r : 読み込みモードで開く。  | ||
::* w : 書き出しモードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、既存データが上書きされる。開いたファイルに渡されたデータは、close 関数でそのファイルを閉じるまで、実際には書き出されない。  | ::* w : 書き出しモードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、既存データが上書きされる。開いたファイルに渡されたデータは、close 関数でそのファイルを閉じるまで、実際には書き出されない。  | ||
::* a : 追加モードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、開いた後ポインタが既存のデータの終わりに移動するので、ファイルに書き出される新しいデータは既存のデータの後ろに追加される。  | ::* a : 追加モードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、開いた後ポインタが既存のデータの終わりに移動するので、ファイルに書き出される新しいデータは既存のデータの後ろに追加される。  | ||
::*  注:mode 引数は、小文字でなければならない。 (今後のリリースで変更されるかも)  | ::*  注:mode 引数は、小文字でなければならない。 (今後のリリースで変更されるかも)  | ||
::* '''BricsCAD V17以降の場合:'''  | |||
::: r,ccs=<translation> : 文字コードを指定して読み込みモードで開く。  | |||
::: w,ccs=<translation> : 文字コードを指定して書き出しモードで開く。  | |||
:::* <translation> は、UTF-8, UTF-16LE, UNICODE [=UTF-16LE] が指定できる。  | |||
::* BricsCADでは、「バイナリ」モードのファイルを開くことができる。  | |||
:::* rb : バイナリ読み込みモードで開く  | |||
:::* wb : バイナリ書き出しモードで開く  | |||
:::* ab : バイナリ追加モードで開く  | |||
::: モードは、"バイナリ "モードを指定するために使用することができる。 文字は変換されないが、"そのまま "書き込まれる。  | |||
| 29行目: | 40行目: | ||
: 次のように、既存のファイルを開く。  | : 次のように、既存のファイルを開く。  | ||
<pre class="brush: autolisp;">  | <pre class="brush: autolisp;">  | ||
(setq   | (setq myfile "c:/program files/<CADインストールディレクトリ>/help/filelist.txt")  | ||
(setq a (open myfile "r"))    | |||
#<file "c:/program files/<CADインストールディレクトリ>/help/filelist.txt">  | #<file "c:/program files/<CADインストールディレクトリ>/help/filelist.txt">  | ||
; BricsCAD V17 以降のキャラクターコード指定したケース  | |||
(setq fptr (open myFile "r,ccs=UNICODE"))  | |||
(setq fptr (open myFile "w,ccs=UTF-8"))  | |||
(setq fptr (open myFile "w,ccs=UTF-16LE"))  | |||
</pre>  | </pre>  | ||
| 51行目: | 70行目: | ||
* [[write-line]] 関数  | * [[write-line]] 関数  | ||
* [[read-line]] 関数  | * [[read-line]] 関数  | ||
* [[vle-file-encoding]] 関数(BricsCAD)  | |||
[[Category:AutoLISP]]  | [[Category:AutoLISP]]  | ||
2022年12月10日 (土) 22:05時点における最新版
- 構文
 - (open filename mode)
 
- 機能
 - LISPの入出力関数がアクセスできるようにファイルを開く。
 - BricsCAD の LISP では、UTFおよびユニコード形式のテキストファイルの作成/読み取り/書き込みが可能なように拡張されている。(V17以降)
 - これは、クロスプラットフォーム開発(Linux + OSX)、または特殊な目的(例:HTMLファイルの読み込みと書き込み)に便利。
 - AutoLISPとの後方互換性を保つために、mode引数はUTF/Unicode形式を指定するように拡張された。
 
- 引数
 - 
- filename : 開くファイルの名前と拡張子を指定する文字列。ファイルの完全パスを指定しなかった場合、スタートアップディレクトリを指定したものとみなされる。
 - mode : ファイルを読み込みモード、書き出しモード、追加モードのいずれで開くかを指定する。次の文字のいずれか 1 つを含む文字列を指定する。
 
- r : 読み込みモードで開く。
 - w : 書き出しモードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、既存データが上書きされる。開いたファイルに渡されたデータは、close 関数でそのファイルを閉じるまで、実際には書き出されない。
 - a : 追加モードで開く。filename 引数のファイルが存在しない場合、新しいファイルが作成、開かれる。ファイルが存在する場合、開いた後ポインタが既存のデータの終わりに移動するので、ファイルに書き出される新しいデータは既存のデータの後ろに追加される。
 - 注:mode 引数は、小文字でなければならない。 (今後のリリースで変更されるかも)
 - BricsCAD V17以降の場合:
 
- r,ccs=<translation> : 文字コードを指定して読み込みモードで開く。
 - w,ccs=<translation> : 文字コードを指定して書き出しモードで開く。
- <translation> は、UTF-8, UTF-16LE, UNICODE [=UTF-16LE] が指定できる。
 
 
- BricsCADでは、「バイナリ」モードのファイルを開くことができる。
 
- rb : バイナリ読み込みモードで開く
 - wb : バイナリ書き出しモードで開く
 - ab : バイナリ追加モードで開く
 
- モードは、"バイナリ "モードを指定するために使用することができる。 文字は変換されないが、"そのまま "書き込まれる。
 
 
- 戻り値
 - ファイルを正常に開くことができた場合、他の入出力関数で使用可能なファイル ディスクリプタを返す。
 - モード "r" が指定され、filename 引数のファイルが存在しない場合、 nil を返す。
 
- 注: DOS システムの場合、プログラムやテキストエディタによってはテキスト ファイルの終端を示す EOF 記号([Ctrl]+[Z]、10 進 ASCII コード 26)が書き出される場合がある。テキスト ファイルを読み込むときに[Ctrl]+[Z] があると、その後にさらにデータが存在する場合でも DOS はファイルの終端とみなす。他のプログラムが作成したファイルに open 関数の "a" モードを使用してデータを追加する場合、テキスト ファイルの終わりに [Ctrl]+[Z] が挿入されていないかどうかを確認する。
 
- サンプル
 - 次のように、既存のファイルを開く。
 
(setq myfile "c:/program files/<CADインストールディレクトリ>/help/filelist.txt") (setq a (open myfile "r")) #<file "c:/program files/<CADインストールディレクトリ>/help/filelist.txt"> ; BricsCAD V17 以降のキャラクターコード指定したケース (setq fptr (open myFile "r,ccs=UNICODE")) (setq fptr (open myFile "w,ccs=UTF-8")) (setq fptr (open myFile "w,ccs=UTF-16LE"))
- 次の例は、存在しないファイルに対して open 関数を実行している。
 
(setq f (open "c:¥¥my documents¥¥new.tst" "w")) #<file "c:¥¥my documents¥¥new.tst"> (setq f (open "nosuch.fil" "r")) nil (setq f (open "logfile" "a")) #<file "logfile">
関連事項
- close 関数
 - findfile 関数
 - write-line 関数
 - read-line 関数
 - vle-file-encoding 関数(BricsCAD)