Path to object
Path to object ( rota {; tipoRota} ) : Object
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| rota | Text | → | Nome da rota | 
| tipoRota | Integer | → | Sintaxe do tipo de rota: System (padrão) ou Posix | 
| Resultado | Object | ← | Objeto que descreve o conteúdo da rota. | 
Descrição
O comando Path to object devolve um objeto que contenha as propriedades específicas da rota que passou no parâmetro.
De forma pré-determinada, se omitir o parâmetro tipoRota, se assumirá que passou uma rota de sistema que contém separadores de sistema ("\" em Windows, ":" em macOS). Se passou uma rota Posix que contenha separadores de Posix ("/") ou deseja expressar o tipo de rota, passe uma das constantes abaixo no parâmetro tipoRota:
| Constante | Tipo | Valor | Comentário | 
|---|---|---|---|
| Path is POSIX | Inteiro longo | 1 | A rota ou caminho é expressa usando a sintaxe Posix | 
| Path is system | Inteiro longo | 0 | (Pré-determinado) A rota ou caminho é expressa usando a sintaxe atual do sistema (Windows ou macOS) | 
O comando devolve um objeto resultante de analizar a rota. As propriedades abaixo estão disponíveis:
| Propriedade | Tipo | Descrição | 
|---|---|---|
| parentFolder | Texto | Informação do diretório para a rota. O último caractere é sempre um separador de pastas. | 
| name | Texto | Nome de arquivo ou pasta final da rota especificada, sem extensão. | 
| extension | Texto | Extensão do nome final de arquivo ou pasta. Sempre começa por ".". String vazia "" se não houver extensão. | 
| isFolder | Booleano | True se o nome for um nome de pasta, do contrário, do contrário (o valor pré-determinado é false) | 
Vai se supor que passou uma rota de pasta se o último caractere da rota for um separador correspondente ao tipo de rota (por exemplo, "\" em Windows). Do contrário, se suporá que passou um nome de arquivo. A extensão, se não estiver vazia, é retornada independente de se a rota representa um arquivo ou pasta, Em qualquer caso, é necessário concatenar o nome e extensão para recuperar o nome completo.
Lembre que Path to object só maneja strings. Tampouco comprova se a rota for válida com respeito ao tipo de rota, nem a existência real de nenhum arquivo ou pasta.
Exemplo 1
Os exemplos abaixo mostram vários resultados com rotas de arquivos:
 var $o : Object
 $o:=Path to object("C:\\first\\second\\fileZ") //em Windows
  //$o.parentFolder="C:\\first\\second\\"
  //$o.name="fileZ"
  //$o.extension=""
  //$o.isFolder=false
 var $o : Object
 $o:=Path to object("osx:Users:john:Documents:Comments.text)  //en macOS
  //$o.parentFolder="osx:Users:john:Documents:"
  //$o.name="Comments"
  //$o.extension=".text"
  //$o.isFolder=false
 var $o : Object
 $o:=Path to object("\\images\\jan\\pict1.png";Path is system) //em Windows
  //$o.parentFolder="\\images\\jan\\"
  //$o.name="pict1"
  //$o.extension=".png"
  //$o.isFolder=false
Definindo uma rota a uma pasta:
 var $o : Object
 $o:=Path to object("osx:Users:oscargoldman:Desktop:Databases:") //macOS
  //$o.parentFolder="osx:Users:oscargoldman:Desktop:"
  //$o.name="Databases"
  //$o.extension=""
  //$o.isFolder=True
 var $o : Object
 $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
 var $o : Object
 $o:=Path to object("/first/second.bundle/";Path is POSIX)
  //$o.parentFolder="/first/"
  //$o.name="second"
  //$o.extension=".bundle"
  //$o.isFolder=true
Se a rota for um diretório raiz, parentFolder está vazio:
 var $o : Object
 $o:=Path to object("C:\\")  //em windows
  //$o.parentFolder=""
  //$o.name="c:"
  //$o.extension=""
  //$o.isFolder=true
 var $o : Object
 $o:=Path to object("osx:") //en macOS
  //$o.parentFolder=""
  //$o.name="osx"
  //$o.extension=""
  //$o.isFolder=true
Se a última parte da rota for ".something", se considera como um nome de arquivo:
 var $o : Object
 $o:=Path to object("/folder/.invisible";Path is POSIX)
  //$o.parentFolder="/folder/"
  //$o.name=".invisible"
  //$o.extension=""
  //$o.isFolder=false
Exemplo 2
É possível combinar este comando com Object to path para mudar o nome de um arquivo em uma rota:
 var $o : Object
 var $path : Text
 $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"
Exemplo 3
Se quiser saber a quantidade de subpastas em uma rota:
 var $o : Object
 var $path : Text
 var $vCount : Integer
 $path:=Select folder //permite que o usuário selecione uma pasta
 $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))
Ver também
Convert path POSIX to system
Convert path system to POSIX
File
Folder 
Object to path
Test path name
Propriedades
| Número do comando | 1547 | 
| Thread-seguro | ✓ |