HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Linguagemclipper »

Está retornando algo como:
e"00002471810800;00;09/17/24\n00001693868185;00;14/07/24\n00001693868185[...]

Onde deveria estar um fim de linha existe um "\n" juntando uma linha na outra.
Se eu abrir no Notepad++ mostra CR+LF no fim das linhas...
Tem uma dúzia de linhas, mas parece que só tem 1.
Por que não está lendo uma linha por vez?
Me código acaba dando erro porque não consegue pegar o serial e a data porque não está lendo uma linha por vez.

Código: Selecionar todos

			nHANDLE := HB_FUSE(cFILENAME) // ABRE P/ LEITURA E GRAVAÇÃO
			@ MAXROW(),00 SAY PADC("Leitura feita. Aguarde...", maxcol()+1) COLOR "W+/B"		
			nLICENCAS := HB_FLastRec()
			IF .T. // !EMPTY(cLICENCAS)
				// VAI PROCURAR LICENÇAS
				************************
				DO WHILE ! hb_FAtEof() // FOR TT=1 TO nLICENCAS
					cLICENCA := HB_FReadAndSkip()
					cLICENCA := ALLTRIM(cLICENCA)				
					// CNPJ 14      |Pg| DATA 8
					//99999999999999;00;CC/CC/CC
					cLCNPJ := LEFT(cLICENCA,14)			
					IF cLCNPJ = cSERIAL
						// ACHOU SERIAL NA LISTA DE LICENÇAS			 
						cTRYAL  := RIGHT(cLICENCA,8) // LÊ A DATA
						dTRYAL  := CTOD(cTRYAL)				
						nDIAS    := dTRYAL-DATE()
						IF nDIAS >= 0
							IF nDIAS = 0
								ALERT("VOCE TEM ATE HOJE PARA AVALIAR O SIBRA")
							ELSE
								ALERT("VOCE TEM "+ STR( nDIAS, 1)+" DIAS LIBERADOS PARA AVALIACAO DO SIBRA")
							ENDIF
							lLICENCA := .T.					 	
						ENDIF
						EXIT // ACHOU, SAI DO LOOP
					ENDIF
				ENDDO
				HB_FUSE()
Se eu der um print no cLICENCA mostra todas as linhas uma embaixo da outra certinho.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por JoséQuintas »

https://vivaclipper.wordpress.com/2014/03/15/hb_fuse/

Pelo que mostra aí é hb_FEof() e não hb_FAtEof()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Itamar M. Lins Jr. »

Olá!
Aqui tá ok, sem erros. Teste usando:

Código: Selecionar todos

>harbour -build
Harbour 3.2.0dev (r2408171537)
Copyright (c) 1999-2021, https://harbour.github.io/

Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2408171537)
Compiler: MinGW GNU C 14.2 (64-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2024-08-17 17:37 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
ChangeLog ID: aa18dc16526ee565b32a6562bd88a98f94d7169e
Built on: Aug 21 2024 09:23:41
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------
Vc usa xHarbour com BCC 5.8 correto ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Linguagemclipper »

Aí tanto faz usar o HB_FATEOF(), HB_EFOF() ou um for...next com HB_LASTREC(). Não dá erro, mas não leu linha por linha, leu o arquivo todo como se fosse uma linha só com "\n"juntando elas.
Vou ter que fazer um teste criando um programa para gravar e povoar o arquivo para fazer um novo teste pra valer porque o arquivo de texto que tem lá deve ter algum tipo de formatação mal assombrada... sei lá. Abri ele no Notepad++ mostrando o final de linha com CR+LF então deveria funcionar, fiquei sem entender...

Sim Itamar, esse xHarbour, mas esse teste eu fiz com o HB32 que também uso eventualmente.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Itamar M. Lins Jr. »

Olá!
Pode ser uso com Linux. (arquivo gravado no windows)
Vai ler dessa forma arquivo com CRLF.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Linguagemclipper »

Acabei de fazer mais uns testes e descobrí algumas curiosidades, postei no meu site a quem interessar possa: https://linguagemclipper.com.br/blogs/d ... ndo-hbfuse
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Itamar M. Lins Jr. »

Olá!
Pois é como disse.
Vc pegou um arquivo texto do LINUX, e abriu no windows. Só /n mesmo como fim de linha, dai no windows colou tudo.
Depois pegou o mesmo arquivo e editou e salvou no windows, ficou /n depois da DATA e acrescentou CR + LF, conforme expliquei.

ERRO BÁSICO de quem usa LINUX e WINDOWS editando arquivos textos. Acontece comigo o tempo todo, quando esqueço.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
LDOSISTEMAS
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 01 Set 2014 17:04
Localização: CLAUDIO/MG
Contato:

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por LDOSISTEMAS »

Estou tentando usar as funções hb_fuse, hb_eof(),hb_freadln e hb_skip na compilação da erro que não encontrou a referencia dessas funções. meu harbour esta versão 3.2 r2104281802
existe algum procedimento a fazer para poder usar essas funções ?
Anexos
Captura de tela 2024-09-24 093638.png
Captura de tela 2024-09-24 093655.png
LAURO DE OLIVEIRA
Analista/Diretor
(37) 3381 32 11
www.ldosistemas.com.br
Imagem
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por Itamar M. Lins Jr. »

Olá!

Código: Selecionar todos

2>hbmk2 -find hb_fuse
hbmisc.hbc (instalado):
   hb_FUse()
Compilação padrão. Colocar hbmisc.hbc no .hbp
Atenção o hbmk2 avisa onde estão essas funções o arquivo que falta adicionar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
LDOSISTEMAS
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 01 Set 2014 17:04
Localização: CLAUDIO/MG
Contato:

HB_FUSE(), problema com HB_FreadLN() e/ou HB_FReadAndSkip()

Mensagem por LDOSISTEMAS »

Entendi, deu certo agora, obrigado Itamar
LAURO DE OLIVEIRA
Analista/Diretor
(37) 3381 32 11
www.ldosistemas.com.br
Imagem
Responder