ファイルおよびファイルシステムに関するローカル/グローバルプロパティ

ここで説明するローカルプロパティとグローバルプロパティは、ファイルおよびファイルシステムオブジェクトに対するSenseTalkスクリプトのアクセスまたはやり取りの方法に影響を与えるものです。SenseTalkにおけるファイルおよびファイルシステムの扱い方に関する追加情報は、ファイルやフォルダの参照およびファイルやフォルダとのやり取りをご覧ください。

ローカルプロパティとグローバルプロパティの扱い方に関する追加情報は、SenseTalkにおけるローカルプロパティとグローバルプロパティをご覧ください。

the folderthe directoryグローバルプロパティ

値:現在の作業ディレクトリのパス

デフォルト:通常はDocumentsフォルダのパス。ただし、PreferencesGeneralセクションにあるDefault Suite Directory設定を更新することにより変更可能です。

挙動:このプロパティでは、現在の作業フォルダへのアクセスや変更を行うことができます。the folderの戻り値は、the folderNamesEndWithSlashグローバルプロパティがfalseに設定されていない限り、スラッシュで終わります。末尾にスラッシュがあると、ファイル名を追加することで簡単にフルパス名が作成できます(下記の例を参照)。

注:SenseTalkスクリプト内では、folderdirectoryという語が同じ意味で使われています。スクリプトにおいてfolderが使われている箇所には、どこでも代わりにdirectoryを使うことができます。

例:

set the directory to "C:\Users\Carrie\Desktop\"

例:

set the folder to "C:\Users\Carrie\Desktop\"

例:

set the directory to "C:\Users\Carrie\Desktop\data\"

put the files of the folder into fileObjects // 現在の作業フォルダにあるファイル群のファイルオブジェクトのリストを返し、それらを変数に格納します

例:

set the folder to "/tmp/myWorkArea" -- 作業フォルダを設定します

put the folder & "newfile.txt" into filePath

put "xyz" into file filePath

関連:

the folderNamesEndWithSlashグローバルプロパティ

値:TrueFalse

デフォルト:True

挙動:このプロパティでは、フォルダまたはディレクトリ名を返すときに末尾にスラッシュを付けるかどうかを決定します。このプロパティが適用されるのは、the folderおよびthe directoryグローバルプロパティと、ディレクトリパスを返す各種SenseTalkコマンドおよび関数です。

例:

set the folderNamesEndWithSlash to false

例:

log the folder // 末尾にスラッシュを付けて現在の作業ディレクトリをログします。例:'C:/Users/Carrie/Documents/'

set the folderNamesEndWithSlash to false

log the folder // 末尾にスラッシュを付けずに現在の作業ディレクトリをログします。例:'C:/Users/Carrie/Documents'

例:

set the folderNamesEndWithSlash to false

put the folder & "\newfile.txt" into filepath // the folder関数からは / が返されないため、有効なパスを作成するためには / を連結します

put "xyz" into file filepath

関連:

the strictFilesグローバルプロパティ

値:TrueFalse

デフォルト:False

挙動:このプロパティでは、実行時におけるファイル使用の管理を厳格化することができます。このプロパティをTrueに設定すると、存在しないファイルをコンテナとして読み取ったときに、空が返されるのではなく、例外が投げられます。

Falseに設定すると、存在しないファイルからの読み取り時において、そのファイルが空であるかのように値が返されます。この振る舞いが時に予期しない結果を生むことがあります。例えば、ファイル名を誤って入力した場合、スクリプトはそれを空として扱ってしまい、ファイルが見つからない旨のエラーは出されません。

例:

set the strictFiles to true

例:

set the StrictFiles to true

put file "C/Desktopmyfile.txt" into myData // 例外(StrictFilesViolation Attempt to read nonexistent file: C:/Users/Carrie/Documents/C/Desktopmyfile.txt')が投げられます

関連:

the defaultStringEncodingグローバルプロパティ

値:現在の文字列エンコード方法。利用可能な値の全リストは、the availableStringEncodings()関数を使って確認します。

put availableStringEncodings()

デフォルト:UTF8

挙動:このプロパティでは、ファイル、ソケットまたはURLの読み書き時におけるテキスト文字列のエンコード方法を指定します。この設定は、readおよびwriteコマンドで使われる他、ファイルまたはURLをコンテナとして扱うときにも使われます。the defaultStringEncodingで受け入れ可能な値には、UTF8、Unicode、ASCII、他多数があります。

例:

set the defaultStringEncoding to "ASCII"

例:

put BlackDiamond as data // 「<e29786>」を表示します

set the defaultStringEncoding to "Unicode"

put BlackDiamond as data // 「<fffec625>」を表示します

例:

put "C:\Users\Carrie\Desktop\Data\characters.txt" into filePath // このパスのファイルにはunicode文字が格納されています

set the DefaultStringEncoding to "Unicode"

put file filePath // ファイルからunicode文字を表示します。例:ʘʤϬϮ

例:

put the defaultStringEncoding into origEncoding

set the defaultStringEncoding to "Unicode" -- すべて16ビットUnicodeのテキスト

put myInternationalText into file "/tmp/twoByteText"

set the defaultStringEncoding to origEncoding -- 元の値に戻します

技術トピック

SenseTalk内では、テキスト文字はそれそのものでしかありません。文字Aは文字Aですし、文字éは文字é(アキュートアクセント付きのe)です。しかし、外部では、同じ文字を表すのに、ビットとバイトの連続として何通りもの表現があります。各種のテキスト表現をエンコーディングと呼びます。SenseTalkが用いる標準のエンコーディングはUTF8です。これは、Unicode文字のエンコーディングに広く使われている8ビットシステムです。

the umaskグローバルプロパティ

値:3桁の数字(詳しい説明は振る舞いをご覧ください)

デフォルト:022

挙動:新しく作成されるファイルのposixパーミッションマスクを設定または取得します。the umaskプロパティは、直接的にせよ間接的にせよSenseTalkで作成するあらゆるファイルまたはフォルダのアクセスパーミッションを管理するためのものです。マスクは3桁の数字から成り、各数字でユーザー、グループ、その他のファイルパーミッションをそれぞれ管理しています。それぞれの数字は0~7から成り、それによってブロックされるパーミッションを示します。値4は読み取りパーミッションのブロックに、2は書き込みパーミッションのブロックに、1は実行パーミッションのブロックにそれぞれ使われます。2つ以上のパーミッションをブロックするときは、これらの値を足し合わせます。

例:

set the umask to 077

例:

put the umask into origMask

set the umask to 247 -- ユーザーは書き込み不可、グループメンバーは読み取り不可、その他の者は全パーミッションがブロックされるよう設定します

create file "/tmp/permissionsTest"

set the umask to origMask -- 元々の値に戻します

関連:

the autoSaveDatabaseUpdatesグローバルプロパティ

値:TrueFalse

デフォルト:True

挙動:このプロパティでは、データベースへの更新を自動的に保存するかどうかを決定します。Trueに設定すると、すべての更新が自動的に保存されます。save changesコマンドを使って手動で変更の書き込みを行いたい場合は、Falseに設定します。

例:

set the autoSaveDatabaseUpdates to false

例:

set the autoSaveDatabaseUpdates to false // 自動アップデートをオフにします

set info to table "memberinfo" of myDB

set member to the record of info where memberNumber is 16

Add 60 days to member's expirationDate

put "23" into member's memberNumber

put the records of info // 「((expirationdate:"2020-04-13", membernumber:"16"),(expirationdate:"2019-12-30", membernumber:"18"))」を表示します

save all changes to info // 保留中のすべての更新をテーブルに送信します

put the records of info // 「((expirationdate:"2019-12-30", membernumber:"18"),(expirationdate:"2020-06-12", membernumber:"23"))」を表示します

関連:

the shellCommandグローバルプロパティ

値:shellコマンドを実行するシェルプログラムのフルパス、ShellExecute、empty

デフォルト:プラットフォームによって異なります(次の振る舞いを参照)。

挙動:このプロパティでは、shellコマンドまたは関数の使用時に、どのシェルプログラムを使ってコマンドを実行するかを管理します。デフォルトでは、MacおよびLinuxのthe shellCommand/bin/sh(Bourne shell)に設定されています。別のシェルでコマンドを実行するには、the shellCommandを、使用したいシェルのフルパスに設定してからshell関数を呼び出すか、「ShellExecute」またはemptyに設定します。

Windowsでは、the shellCommandグローバルプロパティのデフォルト設定がShellExecuteになっています。この設定により、指定ファイルの実行にWindows ShellExecute()関数が使われます。

WindowsでShellExecuteを使用するときは、コマンドまたは関数の他にオプションでいくつかの追加パラメータを渡すことができます。第2のパラメータは、与えられた場合、実行されるコマンドに渡されるパラメータを指定します。第3のパラメータは、そのアクションのデフォルト作業ディレクトリを指定します。第4のパラメータは、基礎となるShellExecute()関数に渡すオプションのフラグを指定する数値を取ります。最後に、第5のパラメータは、与えられた場合、使用する明確な動詞(openexploreeditfindまたはprintなど)を指定します。これを与えない場合は、レジストリで定義されているデフォルトの動詞(またはopen)が使われます。(ShellExecuteの使用時、出力は返されません。)エラーが起こると、the resultが数値に設定されます。それ以外の場合は空になります。

the shellCommandがemptyでなく、かつ、ShellExecuteに設定されていない場合(デフォルトで/bin/shに設定されているMacおよびLinuxの標準的なケース) 、shell関数に複数のパラメータを渡すと、1つのシェルコンテキスト内で連続して各々実行されるべき別個のコマンドとして扱われます。

the shellCommandがemptyの場合、shellは最初のパラメータを実行すべきコマンドとして扱い、追加のパラメータをそのコマンドに渡されるパラメータとして扱います。渡されたパラメータが1つだけの場合、そのパラメータ内にスペースがあればそこで区切られ、コマンドとそのパラメータが導き出されます。

例:

set the shellCommand to "ShellExecute"

shell "example.bat" -- 指定のバッチファイルを実行します

例:

set the shellCommand to empty

put shell("ls -l") -- 「ls」コマンドをパラメータ「-l」で実行します

put shell("ls", "-l") -- 上記と同じことを実行します

注:Windowsオペレーティングシステムには、シェルコマンドを実行する際の制限が存在します。Windows上でシェルコマンドを実行する場合は、シェルコマンドからの出力を確認できません。この問題を解決するには、パイプ処理して出力をファイルに渡すことでコマンド出力をリダイレクトします。スクリプトの完了後は、結果を確認するためにファイルの中身をマニュアルで読み取ります。

shell "c:\windows\system32\cmd.exe", <</c "C:\Program Files (x86)\adt-bundle-windows-x86_64\sdk\platform-tools\adb" >> && MyCommand && "> someFile.txt"

put file "C:\wherever\someFile.txt"

関連:

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant