6602 - Manipulação de arquivos
Problema: Descrição do Problema: Precisa gerar um txt com várias mensagens de log.
Rotina / Tela: Regras
Solução: Solução 6602:
@Exemplo de regra para abrir um arquivo e adicionar texto nesse arquivo sem perder o que já estava gravado.@
definir numero vArq;
definir alfa vNomeArq;
definir numero vLeu;
Definir alfa vLinha;
definir lista vLinhas;
definir funcao AdicionaLinhaNaLista();
Definir alfa vStrData;
Definir alfa vStrHora;
@ O objetivo dessa regra é abrir e ler o conteúdo de um arquivo existe, @
@ adicionando cada linha do arquivo em um registro na lista dinâmica. @
@ Após ler as linhas do arquivo, são adicionadas novas linha a lista. @
@ Após adicionar as linhas desejadas na lista, elas são gravadas no arquivo. @
vLinhas.DefinirCampos();
vLinhas.AdicionarCampo(Linha, Alfa);
vLinhas.EfetivarCampos();
VDat = DatSis;
VHor = Horsis;
ConverteMascara(3,VDat,VStrData,DDMMYYYY);
ConverteMascara(4,VHor,VStrHora,HHMM);
VNomeArq = c://ERRO_LOG + VStrData + _ + VStrHora + .err; @Aqui coloquei a Data e Hora junto, se for igual irá colocar as informações tudo dentro de mesmo arquivo@
vLinha = ; @caso contário criará um novo err no diretório mencionado @
@ Verifica se o arquivo já existe. @
se(ArqExiste(vNomeArq)){
@ Abre o arquivo para leitura. @
vArq = Abrir(vNomeArq, Lernl);
vLeu = Lernl(vArq, vLinha);
enquanto(vLeu = 1){
@ Adiciona as linhas lidas na lista dinâmica. @
AdicionaLinhaNaLista();
@ Lê a próxima linha. @
vLeu = Lernl(vArq, vLinha);
}
@ Fecha o arquivo para liberá-lo. @
Fechar(vArq);
}
@ Abre o arquivo para escrita. @
vArq = Abrir(vNomeArq, Gravarnl);
@ Adiciona linhas com as inconsistencias. @
Se (vcodcli = 20070)
Inicio
vLinha = Inconsistência: Mensagem 1 !!!!;
AdicionaLinhaNaLista();
Fim;
Se (vcodcli = 20071)
Inicio
vLinha = Inconsistência: Mensagem 2 !!!!;
AdicionaLinhaNaLista();
Fim;
@ Grava todas as linhas da lista no arquivo. @
vLinhas.Primeiro();
enquanto(vLinhas.FDA = 0){
vLinha = vLinhas.Linha;
Gravarnl(vArq, vLinha);
vLinhas.Proximo();
}
Fechar(vArq);
funcao AdicionaLinhaNaLista();{
vLinhas.Adicionar();
vLinhas.Linha = vLinha;
vLinhas.Gravar();
}
Rotina / Tela: Regras
Solução: Solução 6602:
@Exemplo de regra para abrir um arquivo e adicionar texto nesse arquivo sem perder o que já estava gravado.@
definir numero vArq;
definir alfa vNomeArq;
definir numero vLeu;
Definir alfa vLinha;
definir lista vLinhas;
definir funcao AdicionaLinhaNaLista();
Definir alfa vStrData;
Definir alfa vStrHora;
@ O objetivo dessa regra é abrir e ler o conteúdo de um arquivo existe, @
@ adicionando cada linha do arquivo em um registro na lista dinâmica. @
@ Após ler as linhas do arquivo, são adicionadas novas linha a lista. @
@ Após adicionar as linhas desejadas na lista, elas são gravadas no arquivo. @
vLinhas.DefinirCampos();
vLinhas.AdicionarCampo(Linha, Alfa);
vLinhas.EfetivarCampos();
VDat = DatSis;
VHor = Horsis;
ConverteMascara(3,VDat,VStrData,DDMMYYYY);
ConverteMascara(4,VHor,VStrHora,HHMM);
VNomeArq = c://ERRO_LOG + VStrData + _ + VStrHora + .err; @Aqui coloquei a Data e Hora junto, se for igual irá colocar as informações tudo dentro de mesmo arquivo@
vLinha = ; @caso contário criará um novo err no diretório mencionado @
@ Verifica se o arquivo já existe. @
se(ArqExiste(vNomeArq)){
@ Abre o arquivo para leitura. @
vArq = Abrir(vNomeArq, Lernl);
vLeu = Lernl(vArq, vLinha);
enquanto(vLeu = 1){
@ Adiciona as linhas lidas na lista dinâmica. @
AdicionaLinhaNaLista();
@ Lê a próxima linha. @
vLeu = Lernl(vArq, vLinha);
}
@ Fecha o arquivo para liberá-lo. @
Fechar(vArq);
}
@ Abre o arquivo para escrita. @
vArq = Abrir(vNomeArq, Gravarnl);
@ Adiciona linhas com as inconsistencias. @
Se (vcodcli = 20070)
Inicio
vLinha = Inconsistência: Mensagem 1 !!!!;
AdicionaLinhaNaLista();
Fim;
Se (vcodcli = 20071)
Inicio
vLinha = Inconsistência: Mensagem 2 !!!!;
AdicionaLinhaNaLista();
Fim;
@ Grava todas as linhas da lista no arquivo. @
vLinhas.Primeiro();
enquanto(vLinhas.FDA = 0){
vLinha = vLinhas.Linha;
Gravarnl(vArq, vLinha);
vLinhas.Proximo();
}
Fechar(vArq);
funcao AdicionaLinhaNaLista();{
vLinhas.Adicionar();
vLinhas.Linha = vLinha;
vLinhas.Gravar();
}