Luiz FERNANDO

[RESOLVIDO] Ler arquivo criado no ANDROID

15 posts in this topic

Veja se alguém pode me ajudar nisso, ao criar o seguinte arquivo no android

030|002065|01|04|24/10/2019
030|000627|01|01|24/10/2019
030|001535|01|01|24/10/2019

não consigo ler ele usando a windev desktop, aparece uns caracter estranhos mais se eu criar o mesmo arquivo usando o bloco de notas, ele le certinho.

obg

Luiz Fernando

Share this post


Link to post
Share on other sites

 

veja como estou criando este arquivo

sBusca is string

strLinha is string



sBusca = HFilter(atualiza_cadastro, "sincronizado<>'" + "S" + "'")

HReadFirst(atualiza_cadastro, sBusca)

WHILE HOut() = False

	strLinha=strLinha+atualiza_cadastro.vendedor+"|"+atualiza_cadastro.cliente+"|"+atualiza_cadastro.campo+"|"+NoSpace(atualiza_cadastro.conteudo)+...

	"|"+DateToString(atualiza_cadastro.data)+CR

	HReadNext(atualiza_cadastro, sBusca)

END

HDeactivateFilter(atualiza_cadastro)

obg

Share this post


Link to post
Share on other sites

Cria com FWriteLine e testa

passei por algo semelhante ao criar CSV e o Pedroso passou a dica q estava no manual, quem sabe sirva pro teu caso tb.

Link do manual

Share this post


Link to post
Share on other sites
3 minutos atrás, admin disse:

Cria com FWriteLine e testa

passei por algo semelhante ao criar CSV e o Pedroso passou a dica q estava no manual, quem sabe sirva pro teu caso tb.

Link do manual

desculpa faltou esta parte do código, já faço dessa forma

ResWrite = fWriteLine(nARQuIvO,strLinha)

IF ResWrite=-1 THEN 

	Error(ErrorInfo(errMessage))

ELSE

	HExecuteQuery(QRY_update_sincroniza_cad_cliente)

END

obg

Share this post


Link to post
Share on other sites

Acho que o detalhe não esta na criação do android, e sim na forma que estou fazendo a leitura na windev\desktop, pq usando outra linguagem estou conseguindo ler o arquivo normal, veja meu código em windev para leitura

s_arquivos_todos is string = fListFile(gsRetorno_local+"c*.rem",frNotRecursive)

s_arquivo_individual is string



//info(s_arquivos_todos)



sf_vendedor is string

sf_cliente is string

sf_tipo is string

sf_conteudo is string

sf_data is string



ToastDisplay("Aguarde gravando dados.",toastShort,vaTop)



FOR EACH STRING s_arquivo_individual OF s_arquivos_todos SEPARATED BY CR

	sNome_do_arquivo is string=fExtractPath(s_arquivo_individual,fFileName+fExtension)



	IF fFileExist(gsRetorno_local+sNome_do_arquivo) THEN

		sArquivo = fLoadText(gsRetorno_local+sNome_do_arquivo)

		Info(sArquivo)

	ELSE

		Info("Arquivo não localizado...")

		RETURN

	END

	StringToArray(sArquivo,arrRegistros,CRLF)



	FOR EACH sRegistro OF arrRegistros

		IF sRegistro <> "" THEN

			StringToArray(sRegistro,arrCampos,"|")  

		    Info(arrCampos[1])

			//Info(arrCampos[2])

			//Info(arrCampos[3])

			sf_vendedor = arrCampos[1]

		

			sf_cliente = arrCampos[2]

			sf_tipo = arrCampos[3]

			sf_conteudo = NoSpace(arrCampos[4])

			sf_data = StringToDate(arrCampos[5])

			

			sS_CmdSQL =

			[

				INSERT INTO forca_1 ( vendedor,cliente,tipo,conteudo,data,tratamento )

				values(  %1, %2, %3, %4, %5, %6   )

			]

			

			sS_CmdSQL = StringBuild(sS_CmdSQL, gSqlChar(sf_vendedor), gSqlChar(sf_cliente),gSqlChar(sf_tipo)...

			,gSqlChar(sf_conteudo), sf_data, gSqlChar("P") )

			

			ToClipboardRTF(sS_CmdSQL)

			

			IF SQLExec(sS_CmdSQL,"aSQL")=False THEN

				SQLInfo("aSQL")

				sS_Mensagem=SQL.MesErreur

				Info(sS_Mensagem)

				SQLClose("aSQL")

				RETURN

			END

			SQLClose("aSQL")

		END	

	END

	fDelete(gsRetorno_local+sNome_do_arquivo)

	

END

 

Share this post


Link to post
Share on other sites

Pq nao tenta usar o fWriteLine a cada passada no loop e não apenas no final como vc ta fazendo?

Fazendo isso vc nao precisa usar o CR em cada linha

 

Share this post


Link to post
Share on other sites

Pode tentar no desktop da forma abaixo

sFile is string = "C:\CriaSoftWare\a00ped.txt"



fnFileID is int = fOpen(sFile, foRead)



IF fnFileID = -1 THEN

	RESULT False

END



sLine is string = fReadLine(fnFileID)



WHILE not sLine = EOT

	

	data is string = ExtractString(sLine,4, "|")

	nome is string = ExtractString(sLine,9, "|")

		

	sLine = fReadLine(fnFileID) // proxima linha

	

END



fClose(fnFileID)

 

Share this post


Link to post
Share on other sites

Janio usando seu código da o mesmo problema, agora se eu editar o arquivo no bloco de nota e salvar com ANSI da certo, da sua forma e da minha forma, estou usando o emulador do android para criar o arquivo, vou fazer um teste direto no aparelho e ver se dá certo, retorno aqui avisando

 

Obs: sobre usar o fWriteLine a cada linha, vou adotar este procedimento.

 

obg

Share this post


Link to post
Share on other sites
28 minutos atrás, Luiz FERNANDO disse:

Janio usando seu código da o mesmo problema, agora se eu editar o arquivo no bloco de nota e salvar com ANSI da certo, da sua forma e da minha forma, estou usando o emulador do android para criar o arquivo, vou fazer um teste direto no aparelho e ver se dá certo, retorno aqui avisando

 

Obs: sobre usar o fWriteLine a cada linha, vou adotar este procedimento.

 

obg

Não perde tempo no emulador Luiz, uma coisa q temos ouvido e aprendido é q mobile os testes devem ser feitos todos no aparelho. O emulador é mais pra algo de layout etc.

Share this post


Link to post
Share on other sites

você esta usando WS com Json? como envia esse arquivo?

eu tive esse problema usando um WEB em PHP com Json, era o código do cabeçalho, foi so acrescentar no WS isso:

<?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json");
?>

<?php

 

1 person likes this

Share this post


Link to post
Share on other sites

Luiz Fernando,

Se nada do acima der certo, experimenta criar a variável como ANSI

strLinha is ANSI string

Share this post


Link to post
Share on other sites

Creio que este seja o ponto, o padrão de caracteres ao gravar o arquivo texto. Se não estou enganado o padrão do Andróid é UTF-8 e não ANSI.

 

Att

 

1 person likes this

Share this post


Link to post
Share on other sites

@Luiz FERNANDO

Isso é problema de ENCODE, segue a dica do @Janio Aguiar
Verifique também que seu projeto ANDROID esteja em ANSI (é melhor quando se trabalha com Webservices, caso venha a trabalhar).

 

Va até seu Projeto no lado Direito, Click Direito sobre o mesmo, selecione Project Description -> Project (Description of Current Configuration) -> Unicode -> (escolha USE ANSI)

Screenshot_5.png

2 people like this

Share this post


Link to post
Share on other sites

Bom dia, pessoal queria agradecer as dicas acima, realmente alguns detalhe que não sabia, e vou adotar aqui, sem fazer nenhuma mudança criando os arquivo direto nos aparelho android e enviando para o ftp, o problema não ocorreu, deu tudo certo, somente usando o emulador mesmo que dava o erro, grato a ajuda de todos.

2 people like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now