Boa tarde.
Como preencher nas 2 ultimas posições de cada linha de um arquivo TXT com asc(13) + ASC(10), como assinalado na pagina 1 e 3 do arquivo anexado.
Obrigado

Moderador: Moderadores
Local cLinha
SET DEVICE TO PRINTER
SET PRINTER TO "Teste.Txt"
@ pRow()+0, 0 Say "Teste de linha texto 1"
@ pRow()+1, 0 Say "Teste de linha texto 2"
@ pRow()+1, 0 Say "Teste de linha texto 3"
@ pRow()+1, 0 Say "Teste de linha texto 4"
SET DEVICE TO SCREEN
SET PRINTER TO
RUN Teste.txt
SET ALTERNATE TO TEXTO.TXT
SET ALTERNATE ON
SET CONSOLE OFF
?? "sxxxx" + "XXXXX" + Chr(13) + Chr(10)
SET CONSOLE OFF
SET ALTERNATE OFF
SET ALTERNATE TO
#define CRLF Chr(13) + Chr(10)
?? "Texto" + CRLF
?? "outro texto" + CRLF
?? "Texto" + CrLf()
?? "outro texto" + CrLf()
FUNCTION CrLf()
RETURN Chr(13) + Chr(10)
cTxt := ""
cTxt += "linha1" + CrLf()
cTxt += "linha2" + CrLf()
MemoWrit( "texto.txt", cTxt )
?? "texto"
? "outro texto"
?
#define FO_READWRITE 2
#define FS_END 2
SET ALTERNATE TO ( mTxtNfe )
SET ALTERNATE ON
SET CONSOLE OFF
?? "NOTA FISCAL"
?? mTraco
?? "1" // Qtde de notas fiscais no arquivo
?? mTraco
?? " "
?? hb_eol()
mChaveDigital := ;
"35" + ; // UF Ibge
Substr( Dtos( Date() ), 3, 4 ) + ; // AnoMes
SoNumeros( mECnpj ) + ; // Cnpj
"55" + ; // Modelo de Docto Fiscal
"001" + ; // Serie Docto Fiscal
StrZero( notas->Nf, 9 ) + ; // NF
"1" + ;
Right( StrZero( notas->Cod, 10 ), 3 ) + StrZero( notas->Cod, 5 ) // Chave Aleatoria
mChaveDigital := mChaveDigital + CalculaDigito( mChaveDigital, "11" )
// ---------- (NOTAFISCAL-A)
?? "A"
?? mTraco
?? "3.10" // 1 a 4 digitos versao do layout
?? mTraco
?? "NFe" + mChaveDigital // na exportação vai ser seguido da chave digital, na importação tanto faz se tem chave digital
?? mTraco
?? " "
?? hb_eol()
...
SET CONSOLE ON
SET ALTERNATE OFF
SET ALTERNATE TO
// Deixa Ctrl-Z no final da ultima linha
mHandle := fOpen( mTxtNfe, FO_READWRITE )
FSeek( mHandle, -3, FS_END )
fWrite( mHandle, " " )
fClose( mHandle )
cTexto := ""
cTexto += "campo1"
cTexto += "Campo2"
?? Pad( cTexto, 80 ) + hb_Eol()
...
/* 001 */ cTxt += "0"
/* 002 */ cTxt += "1"
/* 003 */ cTxt += "REMESSA"
/* 010 */ cTxt += "01"
/* 012 */ cTxt += Pad( "COBRANCA", 15 )
/* 027 */ cTxt += cBancoAgencia
/* 031 */ cTxt += "00"
/* 033 */ cTxt += Substr( cBancoConta, 1, Len( cBancoConta ) - 1 )
/* 038 */ cTxt += Substr( cBancoConta, Len( cBancoConta ), 1 )
/* 039 */ cTxt += Space(8)
/* 047 */ cTxt += cEmpresaNome
/* 077 */ cTxt += cBancoCodigo
/* 080 */ cTxt += cBancoNome
/* 095 */ cTxt += StrZero( Day( dDataProcesso ), 2 ) + StrZero( Month( dDataProcesso ), 2 ) + StrZero( Year( dDataProcesso ) - 2000, 2 )
/* 101 */ cTxt += Space(294)
/* 395 */ cTxt += StrZero( nSequencial++, 6 )
cTxt += hb_eol()
linha:= PRow()
@ linha, 7 say grupo + sub_grupo + codigo + ;
"-" + SubStr(produto, 1, 26) picture "@!"
@ linha, 42 say preco / qtd picture "9,999.99" // aqui sempre vai estar na linha 42, tem como fazer isso usando o exemplo seu citado a cima?
trans(1000,"@E999.99")
StrZero( 1000.00 * 100, 6 )
@ linha, 7 say grupo + sub_grupo + codigo + ;
"-" + SubStr(produto, 1, 26) picture "@!"
@ linha, 42 say preco / qtd picture "9,999.99" // aqui sempre vai estar na linha 42, tem como fazer isso
Pad(
Space(7) +
grupo +
sub_grupo +
codigo
+ "."
+ Substr( PRODUTO, 1, 26 )
, 42 )
+ Transform( preco / qtd, "9,999.99" )
Usuários vendo este fórum: Google Adsense [Bot] e 8 visitantes