Classe para criar um arquivo e popular incrementalmente
Exemplo da Rotina:
oFWriter := FWFileWriter():New("Caminho do arquivo", .T.) oFWriter:Write('') oFWriter:Close()
Exemplo 1- Escrevendo um texto simples:
#Include "Protheus.ch" User Function zTstTxt() Local cPasta := "" Local cArquivo := "" //Define a pasta como a temporária do S.O. e o nome do arquivo como teste1 cPasta := GetTempPath() cArquivo := "teste1.txt" //Chama a criação da classe oFWriter := FWFileWriter():New(cPasta + cArquivo, .T.) //Se houve falha ao criar, mostra a mensagem If ! oFWriter:Create() MsgStop("Houve um erro ao gerar o arquivo: " + CRLF + oFWriter:Error():Message, "Atenção") //Senão, continua com o processamento Else //Escreve uma frase qualquer no arquivo oFWriter:Write('Hello World' + CRLF) //Encerra o arquivo oFWriter:Close() //Pergunta se deseja abrir o arquivo If MsgYesNo("Arquivo gerado com sucesso (" + cPasta + cArquivo + ")!" + CRLF + "Deseja abrir?", "Atenção") ShellExecute("OPEN", cArquivo, "", cPasta, 1 ) EndIf EndIf Return
Exemplo 2- Escrevendo os dados de uma query:
#Include "Protheus.ch" #Include "TopConn.ch" User Function zTstTxt() Local cPasta := "" Local cArquivo := "" Local cQuery := "" Local cLinha := "" //Define a pasta como a temporária do S.O. e o nome do arquivo como teste1 cPasta := GetTempPath() cArquivo := "teste2.txt" //Chama a criação da classe oFWriter := FWFileWriter():New(cPasta + cArquivo, .T.) //Se houve falha ao criar, mostra a mensagem If ! oFWriter:Create() MsgStop("Houve um erro ao gerar o arquivo: " + CRLF + oFWriter:Error():Message, "Atenção") //Senão, continua com o processamento Else //Monta a query cQuery := " SELECT " + CRLF cQuery += " BM_GRUPO, BM_DESC " + CRLF cQuery += " FROM " + CRLF cQuery += " " + RetSQLName('SBM') + " SBM " + CRLF cQuery += " WHERE " + CRLF cQuery += " BM_FILIAL = '" + FWxFilial('SBM') + "' " + CRLF cQuery += " AND SBM.D_E_L_E_T_ = ' ' " + CRLF TCQuery cQuery New Alias "QRY_SBM" //Enquanto houver dados While ! QRY_SBM->(EoF()) //Monta a linha que será escrita cLinha := "" cLinha += QRY_SBM->BM_GRUPO + ";" cLinha += QRY_SBM->BM_DESC + ";" //Escreve a linha com a quebra do CRLF no fim oFWriter:Write(cLinha + CRLF) QRY_SBM->(DbSkip()) EndDo QRY_SBM->(DbCloseArea()) //Encerra o arquivo oFWriter:Close() //Pergunta se deseja abrir o arquivo If MsgYesNo("Arquivo gerado com sucesso (" + cPasta + cArquivo + ")!" + CRLF + "Deseja abrir?", "Atenção") ShellExecute("OPEN", cArquivo, "", cPasta, 1 ) EndIf EndIf Return
Exemplo em Vídeo:
Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;
Referências:
– TDN