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.
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.
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>.
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!
Boa tarde pessoal, Ajudou, agora eu tenho uma direção para iniciar os trabalhos. Muito obrigado pela ajuda. Att, Leandro.