Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20 R7
Path to object

Path to object  


 

Path to object ( rota {; tipoRota} ) -> Resultado 
Parâmetro Tipo   Descrição
rota  Texto in Nome da rota
tipoRota  Inteiro longo in Sintaxe do tipo de rota: System (padrão) ou Posix
Resultado  Objeto in Objeto que descreve o conteúdo da rota.

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:

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.

Os exemplos abaixo mostram vários resultados com rotas de arquivos:

 C_OBJECT($o)
 $o:=Path to object("C:\\first\\second\\fileZ") //em 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)  //en 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//em Windows
  //$o.parentFolder="\\images\\jan\\"
  //$o.name="pict1"
  //$o.extension=".png"
  //$o.isFolder=false

Definindo uma rota a uma pasta:

 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

Se a rota for um diretório raiz, parentFolder está vazio:

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

 C_OBJECT($o)
 $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:

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

É possível combinar este comando com Object to path para mudar o nome de um arquivo em uma rota:

 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"

Se quiser saber a quantidade de subpastas em uma rota:

 C_OBJECT($o)
 C_TEXT($path)
 C_LONGINT($vCount)
 $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 

Produto: 4D
Tema: Documentos de Sistema
Número 1547

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v16 R6

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20 R7)