「Open」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
{{Template:AutoLISP}}
; 構文
; 構文
: (open ''filename'' ''mode'')
: (open ''filename'' ''mode'')
5行目: 6行目:
; 機能
; 機能
: LISPの入出力関数がアクセスできるようにファイルを開く。
: LISPの入出力関数がアクセスできるようにファイルを開く。
: BricsCAD の LISP では、UTFおよびユニコード形式のテキストファイルの作成/読み取り/書き込みが可能なように拡張されている。(V17以降)
: これは、クロスプラットフォーム開発(Linux + OSX)、または特殊な目的(例:HTMLファイルの読み込みと書き込み)に便利。
: AutoLISPとの後方互換性を保つために、mode引数はUTF/Unicode形式を指定するように拡張された。


; 引数
; 引数
:* 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 : バイナリ追加モードで開く
::: モードは、"バイナリ "モードを指定するために使用することができる。 文字は変換されないが、"そのまま "書き込まれる。


; 戻り値
; 戻り値
: ファイルを正常に開くことができた場合、他の入出力関数で使用可能なファイル ディスクリプタを返す。
: ファイルを正常に開くことができた場合、他の入出力関数で使用可能なファイル ディスクリプタを返す。
: モード "r" が指定され、filename 引数のファイルが存在しない場合、 nil を返す。
: モード "r" が指定され、filename 引数のファイルが存在しない場合、 nil を返す。


: 注: DOS システムの場合、プログラムやテキストエディタによってはテキスト ファイルの終端を示す EOF 記号([Ctrl]+[Z]、10 進 ASCII コード 26)が書き出される場合がある。テキスト ファイルを読み込むときに[Ctrl]+[Z] があると、その後にさらにデータが存在する場合でも DOS はファイルの終端とみなす。他のプログラムが作成したファイルに open 関数の "a" モードを使用してデータを追加する場合、テキスト ファイルの終わりに [Ctrl]+[Z] が挿入されていないかどうかを確認する。
: 注: DOS システムの場合、プログラムやテキストエディタによってはテキスト ファイルの終端を示す EOF 記号([Ctrl]+[Z]、10 進 ASCII コード 26)が書き出される場合がある。テキスト ファイルを読み込むときに[Ctrl]+[Z] があると、その後にさらにデータが存在する場合でも DOS はファイルの終端とみなす。他のプログラムが作成したファイルに open 関数の "a" モードを使用してデータを追加する場合、テキスト ファイルの終わりに [Ctrl]+[Z] が挿入されていないかどうかを確認する。
25行目: 40行目:
: 次のように、既存のファイルを開く。
: 次のように、既存のファイルを開く。
<pre class="brush: autolisp;">
<pre class="brush: autolisp;">
(setq a (open "c:/program files/<CADインストールディレクトリ>/help/filelist.txt" "r"))  
(setq myfile "c:/program files/<CADインストールディレクトリ>/help/filelist.txt")
'''#<file "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"))
 
</pre>
</pre>


32行目: 55行目:
<pre class="brush: autolisp;">
<pre class="brush: autolisp;">
(setq f (open "c:¥¥my documents¥¥new.tst" "w"))  
(setq f (open "c:¥¥my documents¥¥new.tst" "w"))  
'''#<file "c:¥¥my documents¥¥new.tst">'''
#<file "c:¥¥my documents¥¥new.tst">
(setq f (open "nosuch.fil" "r"))  
 
'''nil'''
(setq f (open "nosuch.fil" "r"))  
(setq f (open "logfile" "a"))  
nil
'''#<file "logfile">'''
 
(setq f (open "logfile" "a"))  
#<file "logfile">
</pre>
</pre>


43行目: 68行目:
* [[close]] 関数
* [[close]] 関数
* [[findfile]] 関数
* [[findfile]] 関数
* [[write-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">

関連事項