4D v16.3

Documentos de Sistema

Página Inicial

 
4D v16.3
Documentos de Sistema

Documentos de Sistema  


 

Todos os documentos e aplicações que utiliza em seu computador estão armazenados como arquivos nos discos duros conectados ou montados em seu computador, ou em discos externos ou outros dispositivos de armazenamento. Em 4D, utilizamos os termos arquivo ou documento para referirmos a estes documentos e aplicações. Entretanto, a maioria dos comandos neste tema utilizam o termo "documento" porque geralmente os utilizará para acessar aos documentos (ao invés da aplicação ou arquivos sistema) em disco.

Um disco duro pode ser formatado com uma ou várias partições, cada uma delas chamada um volume. Não importa se dois volumes estão fisicamente presentes no mesmo disco duro; ao nível de 4D, geralmente estes volumes são considerados entidades separadas e equivalentes.

Um volume pode estar localizado em um disco duro conectado fisicamente a seu ordenador ou montado em uma rede através de um protocolo de distribuição de arquivos tal como TCP/IP, AFP ou SMB (Macintosh). Qualquer que seja o caso, a nível de 4D, estes volumes são considerados do mesmo modo quando utiliza os comandos do tema Documentos do sistema (a menos que decida de outro modo e utilize plug-ins para estender as capacidades de sua aplicação neste domínio).

Cada volume tem um nome de volume. Em Windows, os volumes estão designados por uma letra seguida por dois pontos. Geralmente C: e D: são utilizados para designar os volumes que você utiliza para lançar seu sistema (a menos que você configure seu PC de outra forma). Depois as letras da E: a a Z: são utilizadas para volumes adicionais conectados ou montados em seu PC (leitores DVD, outros leitores, leitores de rede, etc.). Em Macintosh, os volumes têm nomes comuns; estes são os nomes que você vê no escritório ao nível do Finder.

Geralmente, você classifica seus documentos em pastas, que podem conter outras pastas. Não é boa idéia acumular centenas ou milhares de arquivos no mesmo nível de um volume; é desordenado e faz com que seu sistema fique lento. Em Windows, uma pasta é (ou era) chamada um diretório. As pastas sempre foram chamadas desta maneira em Macintosh.

Para identificar um documento de maneira única, necessita saber o nome do volume e os nomes das pastas onde o documento está localizado assim como o nome do documento mesmo. Se concatenar todos estes nomes, você obtém a rota de acesso ao documento. No nome desta via, os nomes das pastas estão separados por um caractere especial chamado separador de pasta. Em Windows, este caractere é a barra oblíqua invertida (\); em Macintosh são os dois pontos (:).

Vejamos um exemplo. Você tem um documento Importante Memo localizado na pasta Memos, que está na pasta Documentos, que está na pasta Trabalho atual.

Em Windows, se tudo estiver localizado no drive C: drive (volume), a rota de acesso ao documento é:

C:\Trabalhoatual\Documentos\Memos\Importante Memo.TXT

Nota: igualmente o caractere \ é utilizado pelo editor de métodos de 4D para designar as sequências de escape. Para evitar todo problema de interpretação, o editor transforma automaticamente as rotas de acesso do tipo C:\Disk em C:\\Disk. Para maior informação, consulte o parágrafo “Especificação de nomes e rotas de acesso de documentos.”.

Em Macintosh, se todo o conjunto estiver localizado no disco (volume) Internal Drive, a rota de acesso do documento é:

Internal Drive:Current Work:Documentos:Memos:Importante Memo

Em Windows, o nome do documento tem o sufixo .TXT; veremos o porque na seguinte seção.

Sem importar a plataforma, a rota completa de um documento pode ser expressa desta maneira:

VolName DirSep { DirName DirSep { DirName DirSep { ... } } } DocName

Todos os documentos (arquivos) localizados nos volumes têm várias características, chamadas geralmente atributos ou propriedades: por exemplo o nome do documento, o tipo e o criador.

Um documento está aberto em modo leitura/escrita, aberto em modo apenas leitura ou fechado. Utilizando os comandos integrados de 4D, um documento pode ser aberto em modo leitura/escrita por apenas um processo por vez. Um processo pode abrir vários documentos, vários processos podem abrir múltiplos documentos, você pode abrir o mesmo documento em modo apenas leitura tantas vezes quantas seja necessário, mas não pode abrir duas vezes simultaneamente o mesmo documento em modo leitura/escrita.

Você abre um documento com os comandos Open document, Create document e Append document. Os comandos Create document e Append document  automaticamente abrem os documentos em modo leitura/escrita. Apenas o comando Open document lhe permite escolher o modo de abertura. Quando um documento for aberto em leitura/escrita, você pode ler e escrever caracteres no documento (ver os comandos RECEIVE PACKET e SEND PACKET). Quando termina com um documento, geralmente é fechado com o comando CLOSE DOCUMENT.

Todos os documentos abertos são referidos utilizando a expressão DocRef retornada pelos comandos Open document, Create document e Append document . DocRef identifica de maneira única um documento aberto. É uma expressão de tipo Hora. Todos os comandos que funcionam com documentos abertos esperam DocRef como parâmetro. Se passar um DocRef incorreto a um destes comandos, um erro do administrador de arquivos é gerado.

Nota: quando se chama desde um processo preemptivo, uma referëncia DocRef só pode ser utilizada a partir deste processo preemptivo. Cuando for chamada desde um proceso cooperativo, uma referência DocRef  pode ser utilizada desde qualquer outro processo cooperativo.

Quando acessa a documentos (abrir, fechar, apagar, mudar o nome, copiar), quando modificar as propriedades de um documento ou quando ler e escrever caracteres em um documento, E/S podem ocorrer erros. Um documento pode não ser encontrado; pode estar bloqueado; pode já estar aberto em modo escrita. Pode reparar estes erros com um método de gestão de erros instalado pelo comando ON ERR CALL.. A maioria dos erros que podem ocorrer enquanto são utilizados documentos do sistema são descritos na seção Erros do Administrador de Arquivos do Sistema Operacional (-124 -> -33)

Os comandos Open document, Create document, Append document e Select document permitem acessar a um documento utilizando as caixas de diálogo padrão de abrir ou fechar arquivos. Quando acessar a um documento através de um diálogo padrão, 4D retorna a rota completa do documento na variável sistema Document. Esta variável sistema tem que ser diferenciada do parâmetro document que aparece na lista de parâmetros dos comandos.

A maioría das rotinas desta seção que exigem um nome ou rota de acesso ao documento (exceto quando se indica de outra forma). Se passa um nome, o comando busca o documento dentro da pasta do banco. Se passar uma rota de acesso, deve ser válida.

Se passar um nome ou rota de acesso incorreto, o comando gera um erro do administrador de arquivos que pode ser interceptado utilizando um método ON ERR CALL .

O editor de métodos de 4D permite utilizar sequências de escape. Uma sequência de escape é um conjunto de caracteres que são utilizados para substituir um caractere “especial”. A sequência começa com o caractere barra oblíqua invertida \, seguido por um caracter. Por exemplo, \t é a sequência de escape para o caractere Tab.

O caractere \ também se utiliza como separador de rotas de acesso em Windows. Geralmente, 4D interpretará corretamente as rotas de acesso Windows que são introduzidas no editor de métodos substituindo automaticamente as barras simples \ com barras duplas \\. Por exemplo, C:\Pasta será convertido em C:\\Pasta.

Entretanto, se escrever C:\MeusDocumentos\Novo, 4D mostrará C:\\MeusDocumentos\Novo. Neste caso, o segundo \ é interpretado de maneira incorreta como \N (uma sequência de escape existente). Portanto deve introduzir uma barra dupla \\ quando queira inserir uma barra oblíqua invertida na frente de um caractere que é utilizado em uma das sequências de escape reconhecida por 4D.

As seguintes são as sequências de escape reconhecidas por 4D:

Sequência de escapeCaractere substituído

\n

LF (New line)
\tHT (Horizontal tab)
\rCR (Carriage return)
\\\ (Backslash)
\"" (Quotes)

A maioria dos comandos 4D de gestão de documentos e pastas aceitam as vias de acesso relativas ou absolutas:

  • As vias de acesso relativas definem uma localização com respeito a uma pasta presente no disco. Em 4D, as vias de acesso relativas se expressam geralmente respeito a pasta da base, ou seja a pasta que contém o arquivo de estrutura. As vias de acesso relativas são particularmente úteis para o deslocamento de aplicações em entorno heterogêneos.
  • As vias de acesso absolutas definem uma localização a partir da raíz de um volume e não dependem da posição atual da pasta da base.

Para determinar se uma via de acesso passada a um comando deve ser interpretada como absoluta ou relativa, 4D aplica um algoritmo específico para cada plataforma.

Se o parâmetro contém unicamente os caracteres y se o segundo é um ':',
    ou se o texto contém ':' y '\' como segundo e terceiro caractere,
    ou se o texto começa por "\\",
depois a via de acesso é absoluta.       

Em todos os demais casos, a via é relativa.

Exemplos com o comando CREATE FOLDER:

 CREATE FOLDER("segunda") // via relativa
 CREATE FOLDER("\segunda") // via relativa
 CREATE FOLDER("\segunda\terça") //via relativa
 CREATE FOLDER("c:") // via absoluta
 CREATE FOLDER("d:\segunda") // via absoluta
 CREATE FOLDER("\\srv-Internal\temp") // via absoluta

Se o texto começa com um separador de pasta':',
    ou se não contém nenhum,
depois a via de acesso é relativa.

Em todos os outros casos, a via é absoluta.

Exemplos com o comando CREATE FOLDER:

 CREATE FOLDER("segunda") // via relativa
 CREATE FOLDER("macintosh hd:") // via absoluta
 CREATE FOLDER("segunda:terça") //via absoluta (um volume deve ser chamado segunda)
 CREATE FOLDER(":segunda:terça") // via relativa

  • Detectar sobre qual plataforma trabalha

Apesar de 4D oferecer comandos, tal como MAP FILE TYPES, para eliminar as modificações de código associadas as particularidades das plataformas, quando começar a trabalhar em um nível mais baixo manipulando os documentos em disco (tal como a obtenção de rotas de acesso por programação), deve saber se está trabalhando em uma plataforma Macintosh ou Windows.

O método de projeto Em Windows a continuação permite conhecer se seu banco se estiver correndo em Windows:

  //Método de projeto Em Windows
  //Em Windows -> Booleano
  //Em Windows -> True se o banco estiver em Windows
 C_BOOLEAN($0)
 C_LONGINT($vlPlataforma;$vlSistema;$vlEquipo)
 PLATFORM PROPERTIES($vlPlataforma;$vlSistema;$vlEquipe)
 $0:=($vlPlataforma=Windows)

• Extrair o nome do arquivo de uma rota de acesso completa

Quando tiver obtido o nome completo (a rota de acesso + nome do arquivo) de um documento, poderia necessitar extrair o nome do arquivo do documento, por exemplo, para mostrá-lo no título de uma janela. O método de projeto Extrair nome do arquivo faz isso em Windows e Macintosh.

  //Método de projeto Extrair nome do arquivo
  //Extrair nome do arquivo (String) -> String
  //Extrair nome do arquivo ( nome longo do arquivo ) -> nome do arquivo
 
 C_TEXT($1;$0)
 C_LONGINT($viLon;$viPos;$viCar;$viDirSimbol)
 
 $viDirSimbol:=Directory symbol
 $viLon:=Length($1)
 $viPos:=0
 For($viCar;$viLon;1;-1)
    If(Character code($1$viCar≥)=$viDirSimbol)
       $viPos:=$viCar
       $viCar:=0
    End if
 End for
 If($viPos>0)
    $0:=Substring($1;$viPos+1)
 Else
    $0:=$1
 End if
 If(<>vbDebugOn) //Colocar esta variável em True ou False no Método de banco On Startup
    If($0="")
       TRACE
    End if
 End if

• Extrair a rota de acesso do nome longo

Quando tiver obtido o nome longo do arquivo (rota de acesso + nome de arquivo), pode necessitar extrair a rota de acesso ao arquivo, por exemplo para guardar outros documentos na mesma localização. O método de projeto Extrair rota de acesso faz isto em Windows e Macintosh.

  //Método de projeto Extrair rota de acesso
  //Extrair rota de acesso ( String) -> String
  //Extrair rota de acesso ( Nome longo ) -> Rota de acesso
 
 C_TEXT($1;$0)
 C_LONGINT($viLon;$viPos;$viCar;$viDirSimbol)
 
 $viDirSimbol:=Directory symbol
 $viLon:=Length($1)
 $viPos:=0
 For($viCar;$viLon;1;-1)
    If(Character code($1$viCar≥)=$viDirSimbol)
       $viPos:=$viCar
       $viCar:=0
    End if
 End for
 If($viPos>0)
    $0:=Substring($1;1;$viPos)
 Else
    $0:=$1
 End if
 If(<>vbDebugOn) //Colocar esta variável em True ou False no Método de banco On Startup
    If($0="")
       TRACE
    End if
 End if



Ver também 

Append document
CLOSE DOCUMENT
COPY DOCUMENT
Create document
CREATE FOLDER
DELETE DOCUMENT
Document creator
DOCUMENT LIST
Document type
Documentos Sistema
FOLDER LIST
Get document position
GET DOCUMENT PROPERTIES
Get document size
MAP FILE TYPES
MOVE DOCUMENT
Open document
Select document
SET DOCUMENT CREATOR
SET DOCUMENT POSITION
SET DOCUMENT PROPERTIES
SET DOCUMENT SIZE
SET DOCUMENT TYPE
Test path name
VOLUME ATTRIBUTES
VOLUME LIST

 
PROPRIEDADES 

Produto: 4D
Tema: Documentos de Sistema

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)