4D v12.4

Documentos de Sistema

Página Inicial

 
4D v12.4
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 extender 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. En 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. Dentro desta rota de acesso, os nomes das pastas estão separados por um caractere especial chamado símbolo separador. 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 caracter \ é 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.

Em Windows, um documento tem um tipo. Em Macintosh, um documento igualmente tem um tipo e pode ter um criador. O tipo de um documento geralmente indica que é o documento e que contém. Por exemplo, um documento de tipo texto contém texto (sem estilo).

O tipo de um documento está determinado pelo sufixo (chamado arquivo de extensão) anexo ao nome do documento. Por exemplo, .TXT ou .TEXT é a extensão de arquivo para documentos de tipo texto. Este princípio é o mesmo em Mac OS X, entretanto por razões de compatibilidade com versões anteriores do sistema, o tipo de um documento está determinado pela propriedade tipo de arquivo, se tiver sido especificada. Esta propriedade é uma firma de 4 caracteres (não mostrada ao nível do Finder). Por exemplo, o tipo de arquivo de um documento de tipo texto é "TEXT".

Adicionalmente, um documento pode ter um criador, o qual designa a aplicação que criou o documento. Este conceito não existe em Windows. O criador de um documento está determinado pela propriedade criador do arquivo. Se um documento tem ambas propriedades tipo e criador, Mac OS as considerará sem importar a extensão do documento.

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.

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)

Detectar sobre que 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;$vlEquipo)
 $0:=($vlPlataforma=Windows)

• Utilizar o símbolo separador de diretórios correto

Em Windows, um nível de diretório se simboliza com uma barra obliqua invertida (\). Em Macintosh, um nível de pasta é simbolizado com dois pontos (:). Dependendo da plataforma na qual a base roda, o método de projetoSímbolo separador retorna o código do símbolo (caractere) separador de diretórios correto.

  ` Método de projeto Símbolo separador
  ` Símbolo separador -> Inteiro
  ` Símbolo separador -> Código de "\" (Windows) ou ":" (Mac OS)
 
 C_INTEGER($0)
 
 If(On Windows)
    $0:=Character code("\\")
 Else
    $0:=Character code(":")
 End if

Nota de compatibilidade: a partir da versão 12 de 4D, se recomenda utilizar a constante Folder separator (tema Documentos do Sistema) para criar rotas válidas sem considerar a plataforma de execução. Esta constante toma automaticamente o valor do separador que corresponde ao sistema operativo do qual se chama.

• 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 proyecto <span class="rte4d_cmd">Extrair nome do arquiv</span><gen9>o
  ` </gen9><span class="rte4d_cmd">Extrair nome do arquivo</span> <gen9>(String) -> String
  ` </gen9><span class="rte4d_cmd">Extrair nome do arquivo</span><gen9> ( nome longo do arquivo ) -> nome do arquivo
 
 C_STRING(255;$1;$0)
 C_INTEGER($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</gen9>

• Extrair a rota de acceso 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 <span class="rte4d_cmd">Extrair rota de acesso</span><gen9>
  ` </gen9><span class="rte4d_cmd">Extrair rota de acesso</span><gen9> ( String) -> String
  ` </gen9><span class="rte4d_cmd">Extrair rota de acesso</span><gen9> ( Nome longo ) -> Rota de acesso
 
 C_STRING(255;$1;$0)
 C_STRING(1;$vsDirSimbol)
 C_INTEGER($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</gen9>

 
PROPRIEDADES 

Produto: 4D
Tema: Documentos de Sistema

 
VER TAMBÉM 

Append document
CLOSE DOCUMENT
COPY DOCUMENT
Create document
CREATE FOLDER
DELETE DOCUMENT
Document creator
DOCUMENT LIST
Document type
Documentos do 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