Professional Documents
Culture Documents
ADIR()
Funo que preenche os arrays passados com os dados dos arquivos encontrados,
atravs da mscara informada. Tanto arquivos locais (Remote) como do servidor podem
ser informados.
Importante: ADir uma funo obsoleta, utilize sempre Directory().
Sintaxe: ADIR([ cArqEspec ], [ aNomeArq ], [ aTamanho ], [ aData ], [aHora],[
aAtributo ])
Parmetros:
cArqEspec Caminho dos arquivos a serem includos na busca de informaes. Segue o
padro para especificao de arquivos, aceitando arquivos no servidor Protheus e no
Cliente. Caracteres como * e ? so aceitos normalmente. Caso
seja omitido, sero aceitos todos os arquivos do diretrio default ( *.* ).
aNomeArq Array de Caracteres. o array com os nomes dos arquivos encontrados na
busca.O contedo anterior do array apagado.
aTamanho Array Numrico. So os tamanhos dos arquivos encontrados na busca.
aData Array de Datas. So as datas de modificao dos arquivos encontrados na busca.
aHora Array de Caracteres. So os horrios de modificao dos arquivos encontrados.
Cada elemento contm horrio no formato: hh:mm:ss.
aAtributos Array de Caracteres. So os atributos dos arquivos, caso esse array seja
passado como parmetros, sero includos os arquivos com atributos de sistema e
ocultos.
Retorno:
nArquivos Quantidade de arquivos encontrados.
Exemplo:
Cdigo
1LOCAL aFiles[ADIR("*.TXT")]
2ADIR("*.TXT", aFiles)
3AEVAL(aFiles, { |element| QOUT(element) })
CGETFILE()
Funo utilizada para seleo de um arquivo ou diretrio, disponibilizando uma
interface grfica para amigvel para o usurio. Esta funo est normalmente associada
ao recurso de abrir ou salvar arquivos, permitindo para esta ltima a digitao opcional
do nome do arquivo que ser gravado.
Sintaxe: cGetFile ( ExpC1, ExpC2, ExpN1, ExpC3, ExpL1, ExpN2,ExpL2 )
Parmetros:
ExpC1 Mascara para filtro (Ex: Informes Protheus (*.##R) | *.##R)
ExpC2 Titilo da Janela
ExpN1 Numero da mascara default ( Ex: 1 p/ *.exe )
ExpC3 Diretrio inicial se necessrio
Expl1 .T. para mostrar boto como Salvar e .F. para boto Abrir
ExpN2 Mascara de bits para escolher as opes de visualizao do Objeto.
ExpL2 .T. para exibir diretrio [Servidor] e .F. para no exibir
Mscaras de bits para opes:
GETF_OVERWRITEPROMPT Solicita confirmao para sobrescrever
GETF_MULTISELECT Permite selecionar mltiplos arquivos
Aparncia:
Para permitir a seleo de diversos arquivos contidos em um diretrio necessrio
combinar as funes CGETFILE(), DIRECTORY() e o objeto LISTBOX() conforme
abaixo:
CGETFILE: exibe os diretrios disponveis e retorna o nome do item selecionado.
DIRECTORY: efetua a leitura dos arquivos contidos no diretrio retornado pela
CGETFILE.
LISTBOX: Exibe uma tela de seleo de com a opo de marcao, para que sejam
selecionados os arquivos que sero processados.
Exemplo: Seleo de mltiplos arquivos com CGETFILE, DIRECTORY() e
LISTBOX()
Funo Principal: SELFILE()
Cdigo
1 #include "protheus.ch"
2
3 USER FUNCTION SELFILE()
4 LOCAL cDirectory := ""
5 LOCAL aArquivos := {}
LOCAL nArq := 0
6 PRIVATE aParamFile:= ARRAY(1)
7 IF !PARBOXFILE()
8 RETURN
9 ENDIF
// Exibe a estrutura de diretrio e permite a seleo dos arquivos
10 que sero processados
11 cDirectory := ALLTRIM(cGetFile("Arquivos de
12 Dados|'"+aParamFile[1]+"'|",'Importao de lanamentos', 0,'', .T.,
13 GETF_OVERWRITEPROMPT + GETF_NETWORKDRIVE + GETF_RETDIRECTORY,.T.))
14 aArquivos := Directory(cDirectory+"*.*")
aArquivos := MARKFILE(aArquivos,cDirectory,aParamFile[1],@lSelecao)
15 FOR nArq TO Len(aArquivos)
16 IF !aArquivos[nArq][1]
17 LOOP
18 ENDIF
19 //<...processamento...>
NEXT nArq
20 RETURN
21
22 //Funo auxiliar: PARBOXFILE()
23 STATIC FUNCTION PARBOXFILE()
24 Local aParamBox := {}
CPYT2S()
Funo utilizada para copiar um arquivo do cliente (Remote) para o servidor, sendo que
oscaracteres * e ? so aceitos normalmente. Caso a compactao seja
habilitada(lCompacta), os dados sero transmitidos de maneira compacta e
descompactados antes douso.
Sintaxe: CpyT2S( cOrigem, cDestino, [ lCompacta ])
Parmetros:
cOrigem Nomes dos arquivos a serem copiados, aceita apenas arquivos locais (Cliente ),
WildCards so aceitos normalmente.
cDestino Diretrio com o destino dos arquivos no remote ( Cliente ).
lCompacta Indica se a cpia deve ser feita compactando o arquivo antes.
Retorno:
Lgico Indica se o arquivo foi copiado para o cliente com sucesso.
Exemplo:
Cdigo
1// Copia arquivos do cliente(
de transmitir
2antes
CpyT2S( "C:\TEMP\MANUAL.DOC",
3// Copia arquivos do cliente(
4CpyT2S( "C:\TEMP\MANUAL.DOC",
CURDIR()
Funo que retorna o diretrio corrente do servidor. O caminho retornado sempre
relativo ao RootPath definido na configurao do Environment no .INI do Protheus
Server. Inicialmente , o diretrio atual da aplicao o constante na chave StartPath ,
tambm definido na configurao do Environment no .INI do Protheus Server.
Caso seja passado o parmetro cNovoPath , este path assumido como sendo o Path
atual.
Caso o path recebido como parmetro no exista , seja invlido , ou seja um path
absoluto (iniciado com uma letra de drive ou caminho de rede), a funo no ir setar o
novo path, mantendo o atual .
Sintaxe: CURDIR ( [ cNovoPath ] )
Parmetros:
cNovoPath Caminho relativo , com o novo diretrio que ser ajustado como corrente.
Retorno:
Caracter Diretrio corrente, sem a primeira barra.
Exemplo:
Cdigo
1
cOldDir := curdir()
2cNewDir := '\webadv\xis'
3curdir(cNewDir) // Troca o path
4If cNewDir <> '\'+curdir() // E verifica se trocou mesmo
5conout('Falha ao Trocar de Path de '+cOldDir + ' para '+cNewDir)
6Else
conout('Path de '+cOldDir + ' trocado para '+cNewDir+' com sucesso.')
7Endif
8
DIRECTORY()
Funo de tratamento de ambiente que retorna informaes a respeito dos arquivos no
diretrio corrente ou especificado. semelhante a ADIR(), porm retorna um nico
vetor ao invs de adicionar valores a uma srie de vetores existentes passados por
referncia.
DIRECTORY() pode ser utilizada para realizar operaes em conjuntos de arquivos.
Em combinao com AEVAL(), voc pode definir um bloco que pode ser aplicado a
todos os arquivos que atendam a <cDirSpec> especificada.
Para tornar as referncias aos vrios elementos de cada sub-vetor de arquivo mais
legveis, fornecido o arquivo header Directry.ch, que contm os #defines para os
subarray subscripts.
TABELA A: Atributos de DIRECTORY()
Atributo Significado
H Incluir arquivos ocultos
S Incluir arquivos de sistema
D Incluir diretrios
V Procura pelo volume DOS e exclui outros arquivos
Nota: Arquivos normais so sempre includos na pesquisa, a no ser que V seja
especificado.
TABELA B: Estrutura dos Subvetores de DIRECTORY()
Posio Metasmbolo Directry.ch
1 cNome F_NAME
2 cTamanho F_SIZE
3 dData F_DATE
4 cHora F_TIME
5 cAtributos F_ATT
Sintaxe: DIRECTORY ( < cDirSpec > , [ ] )
Parmetros:
cDirSpec
<cDirSpec> especifica o drive, diretrio e arquivo para a pesquisa no diretrio.
7
DISKSPACE()
Funo de ambiente que determina quantos bytes esto disponveis em uma
determinadaunidade de disco. Esta funo obtm a informao sempre relativa estao
onde est sendo executado o Protheus Remote. Atravs do parmetro nDrive ,
selecionamos qual a unidade de disco que desejamos obter a informao do espao livre
, onde:
0 : Unidade de disco atual da estao (DEFAULT).
1 : Drive A: da estao remota.
2 : Drive B: da estao remota.
3 : Drive C: da estao remota.
4 : Drive D: da estao remota e assim por diante.
Caso a funo DiskSpace seja executada atravs de um Job ( processo isolado no
Servidor , sem interface Remota ) , ou seja passado um argumento de unidade de disco
inexistente ou indisponvel , a funo DISKSPACE() retornar -1
Sintaxe: DISKSPACE ( [ nDrive ] )
Parmetros:
nDrive Nmero do drive, onde 0 o espao na unidade de disco corrente, e 1 o drive
A: do cliente, 2 o drive B: do cliente, etc.
Retorno:
Numrico Nmero de bytes disponveis no disco informado como parmetro.
Exemplo:
Cdigo
nBytesLocal := DISKSPACE( ) // Retorna o espao disponvel na
1 unidade de disco local
2 IF nBytesLocal < 1048576
MsgStop('Unidade de Disco local possui menos de 1 MB livre.')
3 Else
4 MsgStop('Unidade de disco local possui '+str(nBytes_A,12)+' bytes
5 livres.')
6 Endif
:= DISKSPACE( 1 ) // Retorna o espao disponvel no drive
7 nBytes_A
A: local ( remote ).
8 If nBytes_A == -1
9 MsgStop('Unidade A: no est disponvel ou no h disco no Drive')
10ElseIf nBytes_A < 8192
11MsgStop('No h espao disponvel no disco. Substitua o disco na
Unidade A:')
12Else
13MsgStop('Unidade A: Verificada . '+str(nBytes_A,12)+' bytes
14livres.')
Endif
EXISTDIR()
Funo utilizada para determinar se um path de diretrio existe e valido.
Sintaxe: EXISTDIR (< cPath >)
Parmetros:
cPath String contendo o diretrio que ser verificado, caso seja feita uma verificao a
partir do server, devemos informar a partir do rootPath do Protheus, caso contrrio
devemos passar o path completo do diretrio.
Retorno:
Caso a funo FILE() seja executada em Job ( programa sem interface remota ), sendo
passado um caminho absoluto de arquivo (exemplo c:\teste.txt) , a funo retornar .F. e
FERROR() retornar -1 ).
FILENOEXT()
Funo que retorna o nome de um arquivo contido em uma string, ignorando a
extenso.
Sintaxe: FileNoExt( cString )
Parmetros
cString String contendo o nome do arquivo.
Exemplo:
Cdigo
1Local cString := '\SIGAADV\ARQZZZ.DBF'
2cString := FileNoExt( cString )
3// Retorno: \SIGAADV\ARQZZZ
FOPEN()
Funo de tratamento de arquivo de baixo nvel que abre um arquivo binrio existente
para que este possa ser lido e escrito, dependendo do argumento <nModo>. Toda vez
que houver um erro na abertura do arquivo, FERROR() pode ser usado para retornar o
cdigo de erro do Sistema Operacional. Por exemplo, caso o arquivo no exista,
FOPEN() retorna -1 e FERROR() retorna 2 para indicar que o arquivo no foi
encontrado. Veja FERROR() para uma lista
completa dos cdigos de erro.
Caso o arquivo especificado seja aberto, o valor retornado o handle (manipulador) do
Sistema Operacional para o arquivo. Este valor semelhante a um alias no sistema de
banco de dados, e ele exigido para identificar o arquivo aberto para as outras funes
de tratamento de arquivo. Portanto, importante sempre atribuir o valor que foi
retornado a uma
varivel para uso posterior, como mostra o exemplo desta funo.
Nota: Esta funo permite acesso de baixo nvel a arquivos e dispositivos. Ela deve ser
utilizada com extremo cuidado e exige que se conhea a fundo o sistema operacional
utilizado.
FOPEN procura o arquivo no diretrio corrente e nos diretrios configurados na
varivel de pesquisa do Sistema Operacional, a no ser que um path seja declarado
explicitamente como parte do argumento <cArq>.
Por serem executadas em um ambiente cliente-servidor, as funes de tratamento de
arquivos podem trabalhar em arquivos localizados no cliente (estao) ou no servidor. O
ADVPL identifica o local onde o arquivo ser manipulado atravs da existncia ou no
da letra do drive no nome do arquivo passado em <cArq>. Ou seja, se o arquivo
for especificado com a letra do drive, ser aberto na estao. Caso contrrio, ser aberto
no servidor com o diretrio configurado como rootpath sendo o diretrio raiz para
localizao do arquivo.
Sintaxe: FOPEN ( < cArq > , [ nModo ] )
Parmetros:
cArq Nome do arquivo a ser aberto que inclui o path caso haja um.
nModo Modo de acesso DOS solicitado que indica como o arquivo aberto deve ser
acessado. O acesso de uma das categorias relacionadas na tabela A e as restries de
compartilhamento relacionada na Tabela B. O modo padro
zero, somente para leitura, com compartilhamento por Compatibilidade. Ao definirmos
o modo de acesso , devemos somar um elemento da Tabela A com um elemento da
Tabela B.
Retorno:
Numrico FOPEN() retorna o handle de arquivo aberto na faixa de zero a 65.535. Caso
ocorra um erro, FOPEN() retorna -1.
Exemplo:
Cdigo
1
#include 'fileio.ch'
2nH := fopen('\sigaadv\error.log' , FO_READWRITE + FO_SHARED )
3If nH == -1
4MsgStop('Erro de abertura : FERROR '+str(ferror(),4))
5Else
6MsgStop('Arquivo aberto com sucesso.')
fclose(nH)
7Endif
8
Tabela A: Modos de acesso a arquivos binrios
Modo Constate(fileio.ch) Operao
0 FO_READ Aberto para leitura (padro assumido)
1 FO_WRITE Aberto para gravao
2 FO_READWRITE Aberto para leitura e gravao
Tabela B: Modos de acesso de compartilhamento a arquivos binrios
Modo Constate(fileio.ch) Operao
0 FO_COMPAT Modo de Compatibilidade (Default)
16 FO_EXCLUSIVE Acesso total exclusivo
32 FO_DENYWRITE Acesso bloqueando a gravao de outros processos ao arquivo.
48 FO_DENYREAD Acesso bloqueando a leitura de outros processos ao arquivo.
64 FO_DENYNONE Acesso compartilhado. Permite a leitura e gravao por outros.
FREAD()
Funo que realiza a leitura dos dados a partir um arquivo aberto, atravs de FOPEN(),
FCREATE() e/ou FOPENPORT(), e armazena os dados lidos por referncia no buffer
informado. FREAD() ler at o nmero de bytes informado em nQtdBytes; caso
acontea algum erro ou o arquivo chegue ao final, FREAD() retornar um nmero
menor que o especificado em nQtdBytes. FREAD() l normalmente caracteres de
controle (ASC 128, ASC 0, etc.) e l a partir
da posio atual do ponteiro atual do arquivo , que pode ser ajustado ou modificado
pelas funes FSEEK() , FWRITE() ou FREADSTR().
A varivel String a ser utilizada como buffer de leitura deve ser sempre pr-alocado e
passado como referncia. Caso contrrio, os dados no podero ser retornados.
Sintaxe: FREAD ( < nHandle > , < cBuffer > , < nQtdBytes > )
Parmetros:
nHandle o manipulador (Handle) retornado pelas funes FOPEN(), FCREATE(),
FOPENPORT(), que faz referncia ao arquivo a ser lido.
cBuffer o nome de uma varivel do tipo String , a ser utilizada como buffer de leitura
, onde os dados lidos devero ser armazenados. O tamanho desta varivel deve ser
maior ou igual ao tamanho informado em nQtdBytes.
Esta varivel deve ser sempre passada por referncia. ( @ antes do nome da varivel ),
caso contrrio os dados lidos no sero retornados.
nQtdBytes Define a quantidade de Bytes que devem ser lidas do arquivo a partir
posicionamento do ponteiro atual.
Retorno:
Numrico Quantidades de bytes lidos. Caso a quantidade seja menor que a solicitada,
isto indica erro de leitura ou final de arquivo, Verifique a funo FERROR() para
maiores detalhes.
FREADSTR ()
Funo que realiza a leitura de caracteres de um arquivo binrio. FREADSTR() l de
um arquivo aberto, atravs de FOPEN(), FCREATE(), FOPENPORT(). FREADSTR()
ler at o nmero de bytes informado em nQtdBytes ou at encontrar um CHR(0). Caso
acontea algum erro ou o arquivo chegue ao final, FREADSTR() retornar uma string
menor do que nQdBytes e colocar o erro em FERROR(). FREADSTR() l a partir da
posio atual do ponteiro, que pode
ser ajustado pelo FSEEK(), FWRITE( ) ou FREAD().
Sintaxe: FREADSTR ( < nHandle > , < nQtdBytes > )
Parmetros:
nHandle o manipulador retornado pelas funes FOPEN(),
FCREATE(), FOPENPORT().
nQtdBytes Nmero mximo de bytes que devem ser lidos.
Retorno:
Caracter Retorna uma string contendo os caracteres lidos.
FRENAME()
Atravs da funo FRENAME() possvel renomear um arquivo para outro nome, tanto
no servidor como na estao. Ao renomear um arquivo no esquea que esta arquivo
dever estar fechado ( isto , no pode estar em uso por nenhum outro processo ou
estao). Caso o arquivo esteja aberto por outro processo , a operao de renomear o
arquivo no possvel. A funo fRename() no aceita wildcards ( * e/ou ? ).
Vale lembrar que no possvel renomear um arquivo especificando nos parmetros
Lgico Retorna true caso o ponteiro do arquivo tenha chegado ao final, false caso
contrrio.
FT_FGOTO()
Funo utilizada para mover o ponteiro, que indica a leitura do arquivo texto, para a
posio absoluta especificada pelo argumento <nPos>.
Sintaxe: FT_FGOTO ( < nPos > )
Parmetros:
nPos Indica a posio que ser colocado o ponteiro para leitura dos dados no arquivo.
Retorno: Nenhum .
FT_FGOTOP()
A funo tem como objetivo mover o ponteiro, que indica a leitura do arquivo texto,
para a posio absoluta especificada pelo argumento <nPos>.
Sintaxe: FT_FGOTO ( < nPos > )
Parmetros:
nPos Indica a posio que ser colocado o ponteiro para leitura dos dados no arquivo.
Retorno: Nenhum .
FT_FLASTREC()
Funo que retorna o nmero total de linhas do arquivo texto aberto pela FT_FUse. As
linhas so delimitadas pela seqncia de caracteres CRLF o LF.
Verifique maiores informaes sobre formato do arquivo e tamanho mximo da linha de
texto na funo FT_FREADLN().
Sintaxe: FT_FLASTREC( )
Parmetros: Nenhum.
Retorno:
Numrico Retorna a quantidade de linhas existentes no arquivo. Caso o arquivo esteja
vazio, ou no exista arquivo aberto, a funo retornar 0 (zero).
Exemplo:
Cdigo
1
FT_FUse('teste.txt') // Abre o arquivo
2CONOUT("Linhas no arquivo ["+str(ft_flastrec(),6)+"]")
3FT_FGOTOP()
4While !FT_FEof()
5conout("Ponteiro ["+str(FT_FRECNO(),6)+"] Linha ["+FT_FReadln()+"]")
6FT_FSkip()
Enddo
7FT_FUse() // Fecha o arquivo
8
FT_FREADLN()
Funo que retorna uma linha de texto do arquivo aberto pela FT_FUse. As linhas so
delimitadas pela seqncia de caracteres CRLF ( chr(13) + chr(10) ) , ou apenas LF (
chr(10 ), e o tamanho mximo de cada linha 1022 bytes.
A utilizao desta funo no altera a posio do ponteiro para leitura dos dados, o
ponteiro do arquivo no movido. A movimentao do ponteiro realizada atravs da
funo FT_FSKIP()
O limite de 1022 bytes por linha inclui os caracteres delimitadores de final de linha.
Deste modo, quando utilizados os separadores CRLF, isto nos deixa 1020 bytes de
texto, e utilizando LF, 1021 bytes. A tentativa de leitura de arquivos com linhas de texto
maiores do que os valores especificados acima resultar na leitura dos 1023
primeiros bytes da linha, e incorreta identificao das quebras de linha posteriores.
As funes FT_F* foram projetadas para ler arquivos com contedo texto apenas. A
utilizao das mesmas em arquivos binrios pode gerar comportamentos inesperados na
movimentao do ponteiro de leitura do arquivo, e incorretas identificaes nos
separadores de final de linha.
Release: Quando utilizado um Protheus Server, com build superior a 7.00.050713P, a
funo FT_FREADLN() tambm capaz de ler arquivos texto / ASCII, que utilizam
tambm o caractere LF ( chr(10) ) como separador de linha.
Sintaxe: FT_FREADLN( )
Parmetros: Nenhum .
Retorno:
Caracter Retorna a linha inteira na qual est posicionado o ponteiro para leitura de
dados.
FT_FRECNO()
A funo tem o objetivo de retornar a posio do ponteiro do arquivo texto.
A funo FT_FRecno retorna a posio corrente do ponteiro do arquivo texto aberto
pela FT_FUse.
Sintaxe: FT_FRECNO ( )
Parmetros: Nenhum .
Retorno:
Caracter Retorna a posio corrente do ponteiro do arquivo texto.
FT_FSKIP()
Funo que move o ponteiro do arquivo texto aberto pela FT_FUSE() para a prxima
linha, similar ao DBSKIP() usado para arquivos de dados.
Sintaxe: FT_FSKIP ( [ nLinhas ] )
Parmetros:
nLinhas nLinhas corresponde ao nmero de linhas do arquivo TXT ref. movimentao
do ponteiro de leitura do arquivo.
Retorno: Nenhum .
FT_FUSE()
Funo que abre ou fecha um arquivo texto para uso das funes FT_F*. As funes
FT_F* so usadas para ler arquivos texto, onde as linhas so delimitadas pela seqncia
de caracteres CRLF ou LF (*) e o tamanho mximo de cada linha 1022 bytes.. O
arquivo aberto em uma rea de trabalho, similar usada pelas tabelas de dados.
Verifique maiores informaes sobre formato do arquivo e tamanho mximo da linha de
texto na funo FT_FREADLN().
Sintaxe: FT_FUSE ( [ cTXTFile ] )
Parmetros:
cTXTFile Corresponde ao nome do arquivo TXT a ser aberto. Caso o nome no seja
passado, e j exista um arquivo aberto. o mesmo fechado.
Retorno:
Numrico A funo retorna o Handle de controle do arquivo. Em caso de falha de
abertura, a funo retornar -1
FWRITE()
Funo que permite a escrita em todo ou em parte do contedo do buffer , limitando a
quantidade de Bytes atravs do parmetro nQtdBytes. A escrita comea a partir da
posio corrente do ponteiro de arquivos, e a funo FWRITE retornar a quantidade
real de bytes escritos. Atravs das funes FOPEN(), FCREATE(), ou FOPENPORT(),
podemos abrir ou criar um arquivo ou abrir uma porta de comunicao , para o qual
sero gravados ou enviados os
dados do buffer informado. Por tratar-se de uma funo de manipulao de contedo
binrio , so suportados na String cBuffer todos os caracteres da tabela ASCII ,
inclusive caracteres de controle ( ASC 0 , ASC 12 , ASC 128 , etc.).
Caso acontea alguma falha na gravao , a funo retornar um nmero menor que o
nQtdBytes. Neste caso , a funo FERROR() pode ser utilizada para determinar o erro
especfico ocorrido. A gravao no arquivo realizada a partir da posio atual do
ponteiro, que pode ser ajustado atravs das funes FSEEK() , FREAD() ou
FREADSTR().
Sintaxe: FWRITE ( < nHandle > , < cBuffer > , [ nQtdBytes ] )
Parmetros:
nHandle o manipulador de arquivo ou device retornado pelas funes FOPEN(),
FCREATE(), ou FOPENPORT().
cBuffer <cBuffer> a cadeia de caracteres a ser escrita no arquivo especificado. O
tamanho desta varivel deve ser maior ou igual ao tamanho informado em nQtdBytes
(caso seja informado o tamanho).
nQtdBytes <nQtdBytes> indica a quantidade de bytes a serem escritos a partir da
posio corrente do ponteiro de arquivos. Caso seja omitido, todo o contedo de
<cBuffer> escrito.
Retorno:
Numrico FWRITE() retorna a quantidade de bytes escritos na forma de um valor
numrico inteiro. Caso o valor retornado seja igual a <nQtdBytes>, a operao foi bem
sucedida. Caso o valor de retorno seja menor que
<nBytes> ou zero, ou o disco est cheio ou ocorreu outro erro. Neste caso, utilize a
funo FERROR() para obter maiores detalhes da ocorrncia.
Exemplo:
Cdigo
#INCLUDE "FILEIO.CH"
#DEFINE F_BLOCK 1024 // Define o bloco de Bytes a serem lidos /
gravados por vez
User Function TestCopy()
Local cBuffer := SPACE(F_BLOCK)
Local nHOrigem , nHDestino
Local nBytesLidos , nBytesFalta , nTamArquivo
Local nBytesLer , nBytesSalvo
Local lCopiaOk := .T.
// Abre o arquivo de Origem
nHOrigem := FOPEN("ORIGEM.TXT", FO_READ)
1
2
3
4
5
6
7
8
9
10
(continuao):
11Exemplo
// Testa a abertura do Arquivo
12 If nHOrigem == -1
13 MsgStop('Erro ao abrir origem. Ferror = '+str(ferror(),4),'Erro')
14 Return .F.
15 Endif
// Determina o tamanho do arquivo de origem
16 nTamArquivo := Fseek(nHOrigem,0,2)
67
68
MSCOPYFILE()
Funo que executa a cpia binria de um arquivo para o destino especificado.
Sintaxe: MSCOPYFILE( cArqOrig, cArqDest )
Parmetros:
cArqOrig Nome do arquivo origem e a extenso.
cArqDest Nome do arquivo destino e a extenso.
Retorno:
Lgico Se a copia for realizada com sucesso a funo retornar verdadeiro (.T.).
Exemplo:
Cdigo
1Local cArqOrig := 'ARQ00001.DBF'
2Local cArqDest := 'ARQ00002.XXX'
3If MsCopyFile( cArqOrig, cArqDest )
4APMsgInfo('Copia realizada com sucesso!')
5EndIf
MSCOPYTO()
Funo que realiza a cpia dos registros de uma base de dados para outra, criando o
arquivo destino de acordo com a estrutura da base de dados origem.
Sintaxe: MSCOPYTO( [cArqOrig], cArqDest )
Parmetros:
cArqOrig
Nome do arquivo origem e a extenso se o ambiente for Top o parmetro passar a ser
obrigatrio.
cArqDest Nome do arquivo destino e a extenso.
Retorno:
Lgico Se a copia for realizada com sucesso a funo retornar verdadeiro (.T.).
Exemplo:
Cdigo
1
Local cArqDest := 'SX2ZZZ.DBF'
2DbSelectArea('SX2')
3If MsCopyTo( , cArqDest )
4APMsgInfo('Copia realizada com sucesso!')
5Else
ao copiar o arquivo SX2!')
6APMsgInfo('Problemas
EndIf
7
MSCREATE()
Funo que cria um arquivo (tabela) de acordo com a estrutura informada no parmetro
aStruct. Se o parmetro cDriver no for informado o RDD corrente ser assumido como
padro. Para criao de tabelas no TopConnect necessrio estar conectado ao banco e
o environment do protheus ser TOP.
aStruct: array contendo a estrutura da tabela aonde:
1 caracter, nome do campo;
2 caracter, tipo do campo;