ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20 R7
Path to object

Path to object 


 

Path to object ( path {; pathType} ) -> 戻り値 
引数   説明
path  テキスト in パス名
pathType  倍長整数 in パスシンタックスのタイプ:システム(デフォルト)あるいはPosix
戻り値  オブジェクト in パスの中身を説明したオブジェクト

説明   

Path to object コマンドはpath 引数に渡したパスの特定のプロパティを含んだオブジェクトを返します。

pathType 引数を省略した場合、コマンドはデフォルトでpath 引数にはシステムセパレータ(Windows では"\"、macOS では":" )を含んだシステムパスが渡されたものとみなします。Posix セパレータを含んだPosixパスをpath 引数に渡した場合、あるいはパスのタイプを指定したい場合には、以下の定数のどれか一つをpathType 引数に渡します:

定数 コメント
Path is POSIX 倍長整数 1 パスはPosixシンタックスを使用して表現されています。
Path is system 倍長整数 0 (デフォルト)パスはカレントシステム(WindowsあるいはmacOS)のシンタックスを使用して表現されています。

コマンドは、path 引数に渡されたパスを解析した結果のオブジェクトを返します。オブジェクトには以下のプロパティが含まれています:

プロパティ詳細
parentFolderテキストパスのディレクトリ情報。最後の文字は必ずフォルダセパレータになります。
nameテキスト指定されたパスの最後の、拡張子を含まないファイル名あるいはフォルダ名。
extensionテキスト最終的なファイル名あるいはフォルダ名の拡張子。必ず"."(ドット)で始まりますが、拡張子がない場合には" "(空の文字列)になります。
isFolderブール名前がフォルダ名である場合にはTrue、それ以外の場合にはFalseになります(デフォルトはFalseです)。

path 引数に渡したパスの、最後の文字がパスタイプに対応するセパレータ(例えばWindows 上で"\" など)だった場合、そのパスはフォルダパスだとみなされます。それ以外の場合には、渡されたパスはファイル名であるとみなされます。
拡張子は、空でなければ、パスが示すのがファイルかフォルダかに関わらず、返されます。どちらの場合にしても、完全な名前を取得するためには名前と拡張子を連結させる必要があります。

Path to object は、文字列を受け取るだけであるという点に注意してください。パスが指定されたパスタイプに対して有効であるかをチェックすることはしませんし、指定されたファイルあるいはフォルダが実際に存在するかどうかもチェックはしません。

以下の例題では、ファイルパスに対する様々な結果を示しています:

 C_OBJECT($o)
 $o:=Path to object("C:\\first\\second\\fileZ") // Windows
  //$o.parentFolder="C:\\first\\second\\"
  //$o.name="fileZ"
  //$o.extension=""
  //$o.isFolder=false

 C_OBJECT($o)
 $o:=Path to object("osx:Users:john:Documents:Comments.text)  //macOS
  //$o.parentFolder="osx:Users:john:Documents:"
  //$o.name="Comments"
  //$o.extension=".text"
  //$o.isFolder=false

 C_OBJECT($o)
 $o:=Path to object("\\images\\jan\\pict1.png";Path is system//Windows
  //$o.parentFolder="\\images\\jan\\"
  //$o.name="pict1"
  //$o.extension=".png"
  //$o.isFolder=false

フォルダへのパスを定義する場合を考えます:

 C_OBJECT($o)
 $o:=Path to object("osx:Users:oscargoldman:Desktop:Databases:") //macOS
  //$o.parentFolder="osx:Users:oscargoldman:Desktop:"
  //$o.name="Databases"
  //$o.extension=""
  //$o.isFolder=True

 C_OBJECT($o)
 $o:=Path to object("C:\\4D\\Main\\216410\\64\\4D\\4D.user\\")  //Windows
  //$o.parentFolder="C:\\4D\\Main\\216410\\64\\4D\\"
  //$o.name="4D"
  //$o.extension=".user"
  //$o.isFolder=true

 C_OBJECT($o)
 $o:=Path to object("/first/second.bundle/";Path is POSIX)
  //$o.parentFolder="/first/"
  //$o.name="second"
  //$o.extension=".bundle"
  //$o.isFolder=true

パスがルートディレクトリ出会った場合、parentFolder は空になります:

 C_OBJECT($o)
 $o:=Path to object("C:\\")  //Windows
  //$o.parentFolder=""
  //$o.name="c:"
  //$o.extension=""
  //$o.isFolder=true

 C_OBJECT($o)
 $o:=Path to object("osx:") //macOS
  //$o.parentFolder=""
  //$o.name="osx"
  //$o.extension=""
  //$o.isFolder=true

パスの最後の部分が".something"のような形であった場合、それはファイル名であるとみなされます:

 C_OBJECT($o)
 $o:=Path to object("/folder/.invisible";Path is POSIX)
  //$o.parentFolder="/folder/"
  //$o.name=".invisible"
  //$o.extension=""
  //$o.isFolder=false

このコマンドをObject to path コマンドと組み合わせることでパスの中のファイルの名前を変更することができます:

 C_OBJECT($o)
 C_TEXT($path)
 $o:=Path to object("C:\\4D\\resources\\images\\4D.jpg")
  //$o.parentFolder="C:\\4D\\resources\\images\\"
  //$o.name="4D"
  //$o.extension=".jpg"
  //$o.isFolder=false
 
 $o.name:="4DOld"
 $path:=Object to path($o)
  //$path="C:\4D\resources\images\4DOld.jpg"

パス内に含まれるサブフォルダの数を知りたい場合を考えます:

 C_OBJECT($o)
 C_TEXT($path)
 C_LONGINT($vCount)
 $path:=Select folder //ユーザーにフォルダを選択させる
 $o:=Path to object($path)
 Repeat
    $o:=Path to object($o.parentFolder)
    $vCount:=$vCount+1
 Until($o.parentFolder="")
 ALERT("The path depth is: "+String($count))



参照 

Convert path POSIX to system
Convert path system to POSIX
File
Folder
Object to path
Test path name

 
プロパティ 

プロダクト: 4D
テーマ: システムドキュメント
番号: 1547

This command can be run in preemptive processes

 
ページの目次 
 
履歴 

初出: 4D v16 R6

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v20 R7)