Saltar para o conteúdo principal
Versão: 20 R7 BETA

Path to object

Path to object ( rota {; tipoRota} ) -> Resultado

ParâmetroTipoDescrição
rotaTextNome da rota
tipoRotaIntegerSintaxe do tipo de rota: System (padrão) ou Posix
ResultadoObjectObjeto 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:

ConstanteTipoValorComentário
Path is POSIXInteiro longo1A rota ou caminho é expressa usando a sintaxe Posix
Path is systemInteiro longo0(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:

PropriedadeTipoDescrição
parentFolderTextoInformação do diretório para a rota. O último caractere é sempre um separador de pastas.
nameTextoNome de arquivo ou pasta final da rota especificada, sem extensão.
extensionTextoExtensão do nome final de arquivo ou pasta. Sempre começa por ".". String vazia "" se não houver extensão.
isFolderBooleanoTrue 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