Duvida Ler arquivos do diretório

Discussão em 'Progress 4GL' iniciado por lm1979, Maio 13, 2015.

  1. lm1979

    lm1979 Membro Participativo

    Boa tarde,
    Estou desenvolvendo um programa que faz a leitura de arquivo texto, mas são vários arquivos dentro de um diretório, como eu posso fazer essa leitura?

    Eu pensei em varrer o diretório e gravar em uma tabela o nome de todos os arquivos, depois ler os registros, abrir o arquivo, ler o conteúdo, fechar e mover o arquivo lido para outro diretório, para que o sistema não leia o mesmo arquivo mais de uma vez.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    usa o "input from os-dir()" que te traz a lista dos arquivos no diretorio, o restante é bem o que vc propos, move o arquivo pra uma pasta de lidos e trata ele.
    lm1979 curtiu isso.
  3. jc01

    jc01 Membro Participativo

    E pra ler o arquivo, você já pensou em como fazer? Se ainda não pensou ou não sabe, você pode utilizar o comando COPY-LOB FROM <caminho do_arquivo> TO <variável_long_char>.
    lm1979 curtiu isso.
  4. fernandofarah

    fernandofarah Membro Participativo

    Eu uso assim:

    Código:
    /* defino uma temp-table para guardar as informações */
    Def Temp-table tt-dir
        Field nome-usuario      AS CHAR.
    
    Define Variable OKpressed As Logical Init True No-undo.
    Define Variable c-caminho-imp As Char.
    Define Variable c-reg         As Char.
    Define Variable c-teste       As Char Format "x(20)".
    DEFINE VARIABLE c-fullname    as char format "x(80)" no-undo.
    
    /* Jogo tudo do diretorio para um arquivos .txt */
        OUTPUT TO "c:\temp\dir-altera-ped.txt".
            Dos Silent Dir /b /o Value("\\srvab002\dadosme$\vem\").
        OUTPUT CLOSE.
    
    /* abro txt com arquivos do diretorio para trabalhar o arquivo que preciso */
        If OKpressed = True Then Assign c-caminho-imp = "c:\temp\dir-altera-ped.txt" NO-ERROR.
    
    /* o resto só leitura normal para saber o que captei  */
        Input From Value(c-caminho-imp) No-echo.
    
        Repeat On Error Undo, Leave
               On Stop  Undo, Leave Transaction:
    
            Import Unformatted c-reg.
    
            CREATE tt-dir.
            Assign tt-dir.nome-usuario = (Right-trim(Substr(c-reg,1,200))). CHR(10).
        END. /* Repeat */
    
        FOR EACH tt-dir:
            DISP tt-dir WITH 1 COL WIDTH 444.
        END. /* for each tt-dir */
    Espero que ajude!
    lm1979 e Eilleen curtiram isso.
  5. lm1979

    lm1979 Membro Participativo

    Boa tarde pessoal,
    Ajudou, agora eu tenho uma direção para iniciar os trabalhos.
    Muito obrigado pela ajuda.

    Att,
    Leandro.

Compartilhe esta Página