Página 1 de 1

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

Enviado: 09 Set 2024 01:06
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.

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

Enviado: 09 Set 2024 09:33
por JoséQuintas
https://vivaclipper.wordpress.com/2014/03/15/hb_fuse/

Pelo que mostra aí é hb_FEof() e não hb_FAtEof()

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

Enviado: 09 Set 2024 10:48
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.

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

Enviado: 09 Set 2024 11:30
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.

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

Enviado: 09 Set 2024 11:42
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.

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

Enviado: 10 Set 2024 00:27
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

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

Enviado: 10 Set 2024 08:54
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.

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

Enviado: 24 Set 2024 09:40
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 ?

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

Enviado: 24 Set 2024 09:53
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.

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

Enviado: 25 Set 2024 14:12
por LDOSISTEMAS
Entendi, deu certo agora, obrigado Itamar