Você está na página 1de 21

Manipulao de Arquivos

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

GETF_NOCHANGEDIR No permite mudar o diretrio inicial


GETF_LOCALFLOPPY Exibe o(s) Drive(s) de disquete da maquina local
GETF_LOCALHARD Exibe o(s) HardDisk(s) Local(is)
GETF_NETWORKDRIVE Exibe os drives da rede ( Mapeamentos )
GETF_SHAREWARE No implementado
GETF_RETDIRECTORY Retorna um diretrio
Exemplo:
Cdigo
cGetFile ( '*.PRW|*.CH' , 'Fontes', 1, 'C:\VER507', .F.,
1GETF_LOCALHARD + GETF_LOCALFLOPPY)

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 := {}

25 Local cTitulo := "Filtros Adicionais"


26 Local aRet := {}
Local bOk := {|| .T.}
27 Local aButtons := {}
28 Local lCentered := .T.
29 Local nPosx
30 Local nPosy
cLoad := ""
31 Local
Local lCanSave := .F.
32 Local lUserSave := .F.
33 Local nX := 0
34 Local lRet := .T.
35 AADD(aParamBox,{2,"Tipo de
arquivo",2,{"*.dbf","*.dtc"},100,"AllwaysTrue()",.T.})
36 lRet := ParamBox(aParamBox, cTitulo, aRet, bOk, aButtons, lCentered,
37 nPosx,nPosy,, cLoad, lCanSave, lUserSave)
38 IF ValType(aRet) == "A" .AND. Len(aRet) == Len(aParamBox)
39 For nX := 1 to Len(aParamBox)
aParamBox[nX][1] == 1
40 If
aParam102[nX] := aRet[nX]
41 ElseIf aParamBox[nX][1] == 2 .AND. ValType(aRet[nX]) == "C"
42 aParam102[nX] := aRet[nX] // Tipo do arquivo
43 ElseIf aParamBox[nX][1] == 2 .AND. ValType(aRet[nX]) == "N"
44 aParam102[nX] := aParamBox[nX][4][aRet[nX]] // Tipo do arquivo
Endif
45 Next nX
46 ENDIF
47 RETURN lRet
48
49 //Funo auxiliar: MARKFILE()
50 STATIC FUNCTION MARKFILE(aArquivos,cDiretorio,cDriver,lSelecao)
Local aChaveArq := {}
51 Local cTitulo := "Arquivos para importao: "
52 Local bCondicao := {|| .T.}
53 // Variveis utilizadas na seleo de categorias
54 Local oChkQual,lQual,oQual,cVarQ
Carrega bitmaps
55 //
Local oOk := LoadBitmap( GetResources(), "LBOK")
56 Local oNo := LoadBitmap( GetResources(), "LBNO")
57 // Variveis utilizadas para lista de filiais
58 Local nx := 0
59 Local nAchou := 0
//+----------------------------------------------------------------60 ---+
61 //| Carrega os arquivos do diretrio no array da ListBox |
62 //+----------------------------------------------------------------63 ---+
nX := 1 to Len(aArquivos)
64 For
//+----------------------------------------------------------------65 ---+
66 //| aChaveArq - Contem os arquivos que sero exibidos para seleo |
67 //+----------------------------------------------------------------68 ---+
AADD(aChaveArq,{.F.,aArquivos[nX][1],cDiretorio})
69 Next nX
70 //+----------------------------------------------------------------71 ---+
72 //| Monta tela para seleo dos arquivos contidos no diretrio |
73 //+-------------------------------------------------------------------+
74 DEFINE MSDIALOG oDlg TITLE cTitulo STYLE DS_MODALFRAME From 145,0 To

75 445,628 OF oMainWnd PIXEL


76 oDlg:lEscClose := .F.
@ 05,15 TO 125,300 LABEL UPPER(cDriver) OF oDlg PIXEL
77 @ 15,20 CHECKBOX oChkQual VAR lQual PROMPT "Inverte Seleo" SIZE
78 50, 10 OF oDlg PIXEL;
79 ON CLICK (AEval(aChaveArq, {|z| z[1] :=
80 If(z[1]==.T.,.F.,.T.)}),oQual:Refresh(.F.))
30,20 LISTBOX oQual VAR cVarQ Fields HEADER
81 @"","Cdigo","Descrio"
SIZE;
82 273,090 ON DBLCLICK
83 (aChaveArq:=Troca(oQual:nAt,aChaveArq),oQual:Refresh()) NoScroll OF
84 oDlg PIXEL
85 oQual:SetArray(aChaveArq)
oQual:bLine := { ||
86 {If(aChaveArq[oQual:nAt,1],oOk,oNo),aChaveArq[oQual:nAt,2],aChaveArq
87 [oQual:nAt,3]}}
88 DEFINE SBUTTON FROM 134,240 TYPE 1 ACTION
89 IIF(MarcaOk(aChaveArq),(lSelecao := .T., oDlg:End(),.T.),.F.) ENABLE
oDlg
90 OF
DEFINE SBUTTON FROM 134,270 TYPE 2 ACTION (lSelecao := .F.,
91 oDlg:End()) ENABLE OF oDlg
92 ACTIVATE MSDIALOG oDlg CENTERED
93 RETURN aChaveArq
94
95 //Funo auxiliar: TROCA()
STATIC FUNCTION Troca(nIt,aArray)
96 aArray[nIt,1] := !aArray[nIt,1]
97 Return aArray
98 //Funo auxiliar: MARCAOK()
99 STATIC FUNCTION MarcaOk(aArray)
10 Local lRet:=.F.
Local nx:=0
0 // Checa marcaes efetuadas
10 For nx:=1 To Len(aArray)
1 If aArray[nx,1]
10 lRet:=.T.
2 EndIf
Next nx
10 // Checa se existe algum item marcado na confirmao
3 If !lRet
10 HELP("SELFILE",1,"HELP","SEL. FILE","No existem itens
4 marcados",1,0)
EndIf
10 Return lRet
5
10
6
10
7
10
8
10
9
11
0
CPYS2T()
Funo utilizada para copiar um arquivo do servidor para o cliente (Remote), sendo que

oscaracteres * e ? so aceitos normalmente. Caso a compactao seja habilitada


(lCompacta), os dados sero transmitidos de maneira compacta e descompactados antes
do uso.
Sintaxe: CPYS2T ( < cOrigem > , < cDestino > , [ lCompacta ] )
Parmetros:
cOrigem Nome(s) dos arquivos a serem copiados, aceita apenas arquivos no servidor,
WildCards ( * e ? ) so aceitos normalmente.
cDestino Diretrio com o destino dos arquivos no Client ( Remote ).
lCompacta Indica se a cpia deve ser feita compactando o arquivo antes do envio.
Retorno:
Lgico
lSucess retorna .T. caso o arquivo seja copiado com sucesso , ou .F. em caso de falha na
cpia.
Exemplo:
Cdigo
// Copia arquivos do servidor para o remote local, compactando antes
1de transmitir
2CpyS2T( "\BKP\MANUAL.DOC", "C:\TEMP", .T. )
3// Copia arquivos do servidor para o remote local, sem compactar
4antes de transmitir
CpyS2T( "\BKP\MANUAL.DOC", "C:\TEMP", .F. )

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",

remote ) para o Servidor compactando


"\BKP", .T. )
remote ) para o Servidor sem compactar.
"\BKP" )

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.

Caracteres do tipo coringa so permitidos na especificao de arquivos. Caso


<cDirSpec> seja omitido, o valor padro *.*.
O caminho especificado pode estar na estao (remote) , ou no servidor, obedecendo s
definies de Path Absoluto / Relativo de acesso.
cAtributos> <cAtributos> especifica que arquivos com atributos especiais devem ser
includos na informao retornada. <cAtributos> consiste em uma cadeia de caracteres
que contm um ou mais dos seguintes caracteres, contidos
na tabela adicional A , especificada anteriormente.
Retorno:
Array
DIRECTORY() retorna um vetor de sub-vetores, sendo que cada sub-vetor contm
informaes sobre cada arquivo que atenda a <cDirSpec>.Veja maiores detalhes na
Tabela B, discriminada anteriormente.
Exemplo:
Cdigo
1#INCLUDE "Directry.ch"
2aDirectory := DIRECTORY("*.*","D")
3AEVAL( aDirectory, {|aFile| CONOUT(aFile[F_NAME])} )
DIRREMOVE()
Funo que elimina um diretrio especifico. Caso especifiquemos um path sem a
unidade dedisco , ele ser considerado no ambiente do Servidor , a partir do RootPath
do ambiente ( caso o path comece com \ ), ou a partir do diretrio corrente (caso o path
no seja iniciado com \ ).
Quando especificado um path absoluto ( com unidade de disco preenchida ), a funo
ser executada na estao onde est sendo executado o Protheus Remote. Quando
executamos a funo DirRemove() em JOB ( processo isolado no Server , sem interface
), no possvel especificar um Path absoluto de disco. Caso isto seja realizado , a
funo retornar .F. e
FError() retornar -1 ( Syntax Error ).
Note que necessrio ter direitos suficientes para remover um diretrio, e o diretrio a
ser eliminado precisa estar vazio, sem subdiretrios ou arquivos dentro do mesmo.
Sintaxe: DIRREMOVE ( < cDiretorio > )
Parmetros:
cDiretorio Nome do diretrio a ser removido.
Retorno:
Lgico lSucesso ser .T. caso o diretrio tenha sido eliminado , ou .F. caso no seja
possvel excluir o diretrio. Quando a funo DirRemove retornar .F. , possvel obter
mais detalhes da ocorrncia recuperando o cdigo do Erro
atravs da funo FError().
Exemplo:
Cdigo
cDelPath := 'c:\TmpFiles'
1lRemoveOk := DIRREMOVE(cDelPath)
2IF !lRemoveOk
3MsgStop('Falha ao remover a pasta '+cDelPath+' ( File Error
4'+str(Fewrror(),4)+' ) ')
5Else
MsgStop('Pasta '+cDelPath+' removida com sucesso.')
6Endif

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:

Lgico Retorna se verdadeiro(.T.) caso o diretrio solicitado exista, falso(.F.) caso


contrrio.
Cdigo
1//Exemplo 01: No server a partir do rootPath
2lRet := ExistDir('\teste')
3//Exemplo 02: No client, passando o FullPath
4lRet := ExistDir('c:\APO')
FCLOSE()
Funo de tratamento de arquivos de baixo nvel utilizada para fechar arquivos binrios
e forar que os respectivos buffers do DOS sejam escritos no disco. Caso a operao
falhe, FCLOSE() retorna falso (.F.). FERROR() pode ento ser usado para determinar a
razo exata da falha. Por exemplo, ao tentar-se usar FCLOSE() com um handle
(tratamento dado ao arquivo pelo sistema operacional) invlido retorna falso (.F.) e
FERROR() retorna erro 6 do DOS, invalid handle. Consulte FERROR() para obter uma
lista completa dos cdigos de erro.
Nota: Esta funo permite acesso de baixo nvel aos arquivos e dispositivos do DOS.
Ela deve ser utilizada com extremo cuidado e exige que se conhea a fundo o sistema
operacional utilizado.
Sintaxe: FCLOSE ( < nHandle > )
Parmetros:
nHandle Handle do arquivo obtido previamente atravs de FOPEN() ou FCREATE().
Retorno:
Lgico Retorna falso (.F.) se ocorre um erro enquanto os buffers esto sendo escritos;
do contrrio, retorna verdadeiro (.T.).
Exemplo:
Cdigo
1#include "Fileio.ch"
2nHandle := FCREATE("Testfile", FC_NORMAL)
3If !FCLOSE(nHandle)
4conout( "Erro ao fechar arquivo, erro numero: ", FERROR() )
5EndIf
FCREATE()
Funo de baixo-nvel que permite a manipulao direta dos arquivos textos como
binrios. Aoser executada FCREATE() cria um arquivo ou elimina o seu contedo, e
retorna o handle (manipulador) do arquivo, para ser usado nas demais funes de
manuteno de arquivo.
Aps ser utilizado , o Arquivo deve ser fechado atravs da funo FCLOSE(). Na tabela
abaixo , esto descritos os atributos para criao do arquivo , definidos no arquivo
header fileio.ch Atributos definidos no include FileIO.ch
Constante Valor Descrio
FC_NORMAL 0 Criao normal do Arquivo (default/padro).
FC_READONLY 1 Cria o arquivo protegido para gravao.
FC_HIDDEN 2 Cria o arquivo como oculto.
FC_SYSTEM 4 Cria o arquivo como sistema.
Caso desejemos especificar mais de um atributo , basta som-los . Por exemplo , para

criar um arquivo protegido contra gravao e escondido , passamos como atributo


FC_READONLY + FC_HIDDEN. .
Nota: Caso o arquivo j exista , o contedo do mesmo ser ELIMINADO , e seu
tamanho ser truncado para 0 ( ZERO ) bytes.
Sintaxe: FCREATE ( < cArquivo > , [ nAtributo ] )
Parmetros:
cArquivo Nome do arquivo a ser criado , podendo ser especificado um path absoluto ou
relativo , para criar arquivos no ambiente local ( Remote ) ou no Servidor,
respectivamente .
nAtributo Atributos do arquivo a ser criado (Vide Tabela de atributos abaixo). Caso no
especificado, o DEFAULT FC_NORMAL.
Retorno:
Numrico
A funo retornar o Handle do arquivo para ser usado nas demais funes de
manuteno de arquivo. O Handle ser maior ou igual a zero. Caso no seja possvel
criar o arquivo , a funo retornar o handle -1 , e ser
possvel obter maiores detalhes da ocorrncia atravs da funo FERROR() .
FERASE()
Funo utilizada para apagar um arquivo no disco . O Arquivo pode estar no Servidor
ou na estao local (Remote). O arquivo para ser apagado deve estar fechado, no sendo
permitido a utilizao de caracteres coringa (wildcards).
Sintaxe: FERASE ( < cArquivo > )
Parmetros:
cArquivo Nome do arquivo a ser apagado . Pode ser especificado um path absoluto ou
relativo , para apagar arquivos na estao local ( Remote ) ou no Servidor,
respectivamente.
Retorno:
Numrico A funo retornar 0 caso o arquivo seja apagado com sucesso , e -1 caso no
seja possvel apagar o arquivo. Caso a funo retorne -1, possvel obter maiores
detalhes da ocorrncia atravs da funo FERROR().
Exemplo:
Cdigo
1#include 'DIRECTRY.CH'
2aEval(Directory("*.BAK"), { |aFile| FERASE(aFile[F_NAME]) })
3// Este exemplo apaga um arquivo no cliente ( Remote ) , informando o
da operao
4status
IF FERASE("C:\ListaTXT.tmp") == -1
5MsgStop('Falha na deleo do Arquivo ( FError'+str(ferror(),4)+ ')')
6Else
7MsgStop('Arquivo deletado com sucesso.')
8ENDIF
FILE()
Funo que verifica se existe um arquivo ou um padro de arquivos, no diretrio.
Podem ser especificados caminhos absolutos ( arquivos na estao Remote ) ou
relativos ( a partir do RootPath do Protheus Server) , sendo os caracteres * e ? (
wildcards) aceitos.
Sintaxe: FILE ( < cArquivo > )
Parmetros:

cArquivo Nome do arquivo , podendo ser especificado um path (caminho) . Caminhos


locais (Remote) ou caminhos de servidor so aceitos , bem como wildcards (Caracteres
* e ? ).
Retorno:
Lgico O retorno ser .T. caso o arquivo especificado exista. Caso o mesmo no exista
no path especificado , a funo retorna .F.
Exemplo:
Cdigo
//Verifica no diretrio corrente do servidor se existe o arquivo
1teste.dbf
2FILE("teste.dbf")
Verifica no diretrio Sigaadv do servidor se existe o arquivo
3//
teste.dbf
4FILE("\SIGAADV\TESTE.dbf")
5// Verifica no diretrio Temp do cliente (Remote) se existe o arquivo
6teste.dbf
FILE("C:\TEMP\TESTE.dbf")

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

simultaneamente um caminho de servidor e um de estao remota, bem como


especificar dois arquivos remotos e executar a funo fRename() atravs de um JOB.
Caso isto ocorra, a funo retornar -1 , e fError() retornar tambm -1.
Quando especificamos um path diferente nos arquivos de origem e destino, a funo
fRename() realiza a funcionalidade de MOVER o arquivo para o Path especificado.
Sintaxe: FRENAME ( < cOldFile > , < cNewFile > )
Parmetros:
cOldFile Nome do arquivo ser renomeado, aceita caminhos do servidor e caminhos do
cliente. Caso no seja especificado nenhuma unidade de disco e path, considerado o
path atual no servidor.
cNewFile Novo nome do arquivo, aceita tambm caminho do servidor, e caminho do
cliente.
Retorno:
Numrico Se o status retornado for -1 , ocorreu algum erro na mudana de nome :
Verifique se os dois caminhos esto no mesmo ambiente, verifique a existncia do
arquivo de origem, se ele no est em uso no momento por outro processo , e verifique
se o nome do arquivo de destino j no existe no path de destino especificado.
FSEEK()
Funo que posiciona o ponteiro do arquivo para as prximas operaes de leitura ou
gravao. As movimentaes de ponteiros so relativas nOrigem que pode ter os
seguintes valores, definidos em fileio.ch:
Tabela A: Origem a ser considerada para a movimentao do ponteiro de
posicionamento do Arquivo.
Origem Constate(fileio.ch) Operao
0 FS_SET Ajusta a partir do inicio do arquivo. (Default)
1 FS_RELATIVE Ajuste relativo a posio atual do arquivo.
2 FS_END Ajuste a partir do final do arquivo.
Sintaxe: FSEEK ( < nHandle > , [ nOffSet ] , [ nOrigem ] )
Parmetros:
nHandle Manipulador obtido atravs das funes FCREATE,FOPEN.
nOffSet nOffSet corresponde ao nmero de bytes no ponteiro de posicionamento do
arquivo a ser movido. Pode ser um numero positivo , zero ou negativo, a ser
considerado a partir do parmetro passado em nOrigem.
nOrigem Indica a partir de qual posio do arquivo, o nOffset ser considerado.
Retorno:
Numrico FSEEK() retorna a nova posio do ponteiro de arquivo com relao ao incio
do arquivo (posio 0) na forma de um valor numrico inteiro. Este valor no leva em
conta a posio original do ponteiro de arquivos antes da execuo
da funo FSEEK().
FT_FEOF()
Funo que retorna verdadeiro (.t.) se o arquivo texto aberto pela funo FT_FUSE()
estiver posicionado no final do arquivo, similar funo EOF() utilizada para arquivos
de dados.
Sintaxe: FT_FEOF( )
Parmetros:
Nenhum .
Retorno:

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)

17 // Move o ponteiro do arquivo de origem para o inicio do arquivo


18 Fseek(nHOrigem,0)
// Cria o arquivo de destino
19 nHDestino := FCREATE("DESTINO.TXT", FC_NORMAL)
20 // Testa a criao do arquivo de destino
21 If nHDestino == -1
22 MsgStop('Erro ao criar destino. Ferror = '+str(ferror(),4),'Erro')
// Fecha o arquivo de Origem
23 FCLOSE(nHOrigem)
Return .F.
24 Endif
25 // Define que a quantidade que falta copiar o prprio tamanho do
26Arquivo
27 nBytesFalta := nTamArquivo
// Enquanto houver dados a serem copiados
28 While nBytesFalta > 0
29 // Determina quantidade de dados a serem lidos
30 nBytesLer := Min(nBytesFalta , F_BLOCK )
31 // l os dados do Arquivo
:= FREAD(nHOrigem, @cBuffer, nBytesLer )
32 nBytesLidos
// Determina se no houve falha na leitura
33 If nBytesLidos < nBytesLer
34 MsgStop( "Erro de Leitura da Origem. "+Str(nBytesLer,8,2)+" bytes a
35LER."+Str(nBytesLidos,8,2)+" bytes Lidos."+;
36 "Ferror = "+str(ferror(),4),'Erro')
lCopiaOk := .F.
37 Exit
38 Endif
39 // Salva os dados lidos no arquivo de destino
40 nBytesSalvo := FWRITE(nHDestino, cBuffer,nBytesLer)
41 // Determina se no houve falha na gravao
If nBytesSalvo < nBytesLer
42 MsgStop("Erro de gravao do Destino. "+Str(nBytesLer,8,2)+" bytes
43a SALVAR."+Str(nBytesSalvo,8,2)+" bytes gravados."+;
44 "Ferror = "+str(ferror(),4),'Erro')
45 lCopiaOk := .F.
46 EXIT
Endif
47
48Exemplo (continuao):
49 // Elimina do Total do Arquivo a quantidade de bytes copiados
50 nBytesFalta -= nBytesLer
51 Enddo
// Fecha os arquivos de origem e destino
52 FCLOSE(nHOrigem)
53 FCLOSE(nHDestino)
54 If lCopiaOk
55 MsgStop('Cpia de Arquivos finalizada com sucesso.
bytes copiados.','Final')
56'+str(nTamArquivo,12,0)+'
Else
57 MsgStop( 'Falha na Cpia. Arquivo de Destino incompleto. '+ 'Do
58total de '+str(nTamArquivo,12,0)+' bytes, faltaram
59 '+str(nBytesFalta,12,0)+' bytes.','Final')
60 Endif
Return
61
62
63
64
65
66

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;

3 numrico, tamanho do campo;


4 numrico, decimais.
Sintaxe: MsCreate( cArquivo, aStru ,[cDriver] )
Parmetros:
cArquivo Nome do arquivo.
aStruct Estrutura do arquivo.
cDriver RDD do arquivo.
Retorno:
Lgico Indica se a operao foi executada com sucesso.
Exemplo:
Cdigo
1
Local cTarget := '\sigaadv\'
2Local aStrut
3aStrut := { { 'Campo', 'C', 40, 0 } }
4If MsCreate( cTarget+'ARQ1001', aStrut )
5APMsgInfo('Criado com sucesso!')
6Else
APMsgInfo('Problemas ao criar o arquivo!')
7EndIf
8
MSERASE()
Funo utilizada para deletar fisicamente o arquivo especificado.
Sintaxe: MsErase( cArquivo, [cIndice], [cDriver] )
Parmetros:
cArquivo Nome do arquivo e a extenso.
cIndice Nome do arquivo de ndice e a extenso.
cDriver RDD do arquivo, se no for informado assumir o RDD corrente.
Retorno:
Lgico Indica se a operao foi executada com sucesso.
Exemplo:
Cdigo
1
Local cArquivo := 'SX2ZZZ.DBF'
2Local cIndice := 'SX2ZZZ'+ OrdBagExt()
3If MsErase( cArquivo, cIndice )
4APMsgInfo( 'Arquivo deletado com sucesso!' )
5Else
'Problemas ao deletar arquivo!' )
6APMsgInfo(
EndIf
7
MSRENAME()
Funo que verifica a existncia do arquivo especificado.
Sintaxe: MsFile( cArquivo, [cIndice], [cDriver] )
Parmetros:
cArquivo Nome do arquivo e a extenso.
cIndice Nome do arquivo de ndice e a extenso.
cDriver RDD do arquivo, se no for informado assumir o RDD corrente.
Retorno:

Lgico Indica se o arquivo especificado existe.


Exemplo:
Cdigo
1Local cArquivo := 'SX2ZZZ.DBF'
2Local cIndice := 'SX2ZZZ'+ OrdBagExt()
3If !MsFile ( cArquivo, cIndice )
4APMsgInfo( 'Arquivo no encontrado!' )
5EndIf
RETFILENAME()
Funo que retorna o nome de um arquivo contido em uma string, ignorando o caminho
e a extenso.
Sintaxe: RetFileName( cArquivo )
Parmetros:
cArquivo String contendo o nome do arquivo
Retorno:
Caracter Nome do arquivo contido na string cArquivo sem o caminho e a extenso.
Exemplo:
Cdigo
1Local cArquivo := '\SIGAADV\ARQZZZ.DBF'
2cArquivo := RetFileName( cArquivo )
3// retorno ARQZZZ

Você também pode gostar