SEQUENCIAL DO TEMPO DO ZAGAIA
uma novo cliente tem um programa do tempo do QBasic, ele usa como banco de dados vamos dizer assim, arquivos texto sequenciais, o cara que programou isso ja passou dessa pra melhor. entáo náo tenho como sultar tamanhos de campos nada, só sei que é sequencias e quando se trata de valores ele pega e transforma eu binario.
Alguem ai pode me dar uma luz de como ler trasforna converter esse trem pra alguma coisa que de pra ler?
Obrigado!
ex. onde inicia cada nova linha.
vou tentar montar alguma coisa com essa tabela usando array.
Já tive a oportunidade de lá nas antigas trabalhar com GWBasic (depois veio o QBasic como parte do MS-DOS 6.22).
Ao meu ver, o único jeito é você abrir o arquivo como RANDOM (sequencias randômicos). O que você pegar na variável de leitura lhe ajudará a entender o conteúdo, o qual não tem delimitadores fixos, você precisa saber o formato do registro.
Veja exemplos em:
http://www.o-bizz.de/qbtuts/gw-train/
http://www.antonis.de/qbebooks/gwbasman/open.html
http://www.divonasperi.it/divona/tam/tecnologia/dow-all/GW%20Basic%20%28inglese%29.pdf
http://www.antonis.de/qbebooks/gwbasman/chapter%205.html
Tudo de bom.
segue parte do conteudo, não consego identificar se hex hexdecimal ou liguagem do alem!
-------------------------------------------------------------
02-01-04d_@Ãõ(\ÂÂC@ARGAMASSA EXTERNA CIMENFLEX (20KG)*CIMENTOLIT** {žAXÃE02-01-04Âû@@®Gáz®@ACIDO MURIATICO **1 LITRO** …ëñ?'ÃE02-01-04 AÃÌÌÌÌÌ@PARAFUSO FRANCES 3/8 X 4 GALV …ë?'ÃE02-01-04ÂÔ A333333ã?ARRUELA LISA GALV 3/8 ÂÂu='ÃE02-01-04Â, AÃÌÌÌÌÌì?PORCA SEXT 3/8**5/16 ìQ¸='ÃE02-01-04Ú¨ €?®Gáz®×?TIJOLO A VISTA A MAO INTEIRO **ITAIPU** ¤p½>hÃE02-01-04Ú¨ zD w@TIJOLO A VISTA A MAO INTEIRO **ITAIPU** ¤p½>pÃE02-01-04èÀ?…ëQ¸ÞA@AREIA GROSSA/MEDIA (METRO) ×£¾AxÃE02-01-04èH€?®GázÔ7@AREIA FINA (METRO) ×£¾AxÃE02-01-04èpA O@CAL (VOTORAN/MINERCAL) ÃÌ„@xÃE02-01-04èà @\ÂÂõ(\a@CIMENTO VOTORAN CP II (50KG) R¸žAxÃE02-01-04èAÀ@ìQ¸…ËR@FERRO 5/16 (8.0mm) CA50 12MTS ázHAxÃE02-01-04èC@Ház®G@FERRO 3/16 (4.2mm) CA60 12MTS q=z@xÃE02-01-04è6€?¤p=
×£@ARAME RECOZIDO N.18 (KILO) ¸Â@xÃE02-01-04èTaD c@TIJOLO BAHIANO (UNID) {.>xÃE02-01-04èJ?\ÂÂõ(\,@PEDRA 1/2*( METRO ) ÃÌâAxÃE02-01-04èÑ@A^@PISO LEF 4490-A ANTIDERRAPANTE (METRO) AxÃE02-01-04è_@@¤p=
×£M@ARGAMASSA EXTERNA CIMENFLEX (20KG)*CIMENTOLIT** {žAxÃE02-01-04±…€?ìQ¸…k[Ô]@ARGAMASSA QUARTZOLIT **20KG** )\A€ÃE02-01-04±€?Ãõ(\ÂÂ@PO XADREZ VERMELHO 500GR {ÃŽ@€ÃE02-01-04±nÀ@U@GUARNICAO CEDRO TRABALHADA (0.07CM) 'A€ÃE02-01-04…€@ìQ¸…kB@ARGAMASSA QUARTZOLIT **20KG** )\AˆÃE02-01-04^'A=
×£p=7@REJUNTE JUNTALIDER CINZA ESCURO (KG) ázÔ?ˆÃE02-01-04èrBfffff}@LAJE TRELICA P/FORRO H-8 (SEM ADICIONAIS) ffNAÂÃE02-01-04è
@ W@CIMENTO CAMPEAO CPII (50KG) 33—AÂÃE02-01-04èAÀ@…ëQ¸åQ@FERRO 5/16 (8.0mm) CA50 12MTS Há>AÂÃE02-01-04è@ @ÃÌÌÌÌüS@FERRO 3/8 (10.0mm) CA50 12MTS
×AÂÃE02-01-04ÿ°Aö(\ÂÂl@CAIBRO 5.00MT =
#A˜ÃE02-01-04ê€@¤p=
׃'@VIGA 6X16 5.50 ¸B˜ÃE02-01-04[C@W@RIPAS 0,05CM. (METRO) R¸?˜ÃE02-01-04T–CK@TIJOLO BAHIANO (UNID) ìQ8>˜ÃE02-01-04^€?áz®Gá@PREGO 15X15 ( 1 KG ) =
‡@˜ÃE02-01-04b €?Ház®G@PREGO 20X48 (KILO) q=j@˜ÃE02-01-04¬@Aö(\ÂÂõK@METROS DE TUBO ESGOTO 75MM (3[ô]) *UNOCAM* ¸•@˜ÃE02-01-04Â@@ÂÂõ(\ßQ@AREIA GROSSA/MEDIA (METRO) ×£¾A ÃE02-01-04ËœTpAš™™™™Y9@SARRAFO 0.07CM (METRO) ìQØ?¨ÃE02-01-04ËœUpAš™™™™¹@@SARRAFO 0.10CM (METRO) R¸@¨ÃE02-01-04À?ìQ¸…kA@BATENTE 0.80 ANGELIN )B°ÃE02-01-04ÃA@ìQ¸…k8@FECH BRASIL INTERNA 1916 IX )\CA°ÃE02-01-04ÃQ@
×£p=
@DOBRADICA 3 1/2 CROMADA (CARTELA C/3) ìQx@°ÃE02-01-04fà @š™™™™™©?VIGA 6X16 7.00
×#<¸ÃE02-01-04fê€?{®Gáz„?VIGA 6X16 5.50
×#<¸ÃE02-01-04fë€?{®Gáz„?VIGA 6X16 6.00
×#<¸ÃE02-01-04Ñ…€?ìQ¸…k[Ô]@ARGAMASSA QUARTZOLIT **20KG** )\AÀÃE02-01-04Ñ
€?{®Gáú4@CIMENTO CAMPEAO CPII (50KG)
קAÀÃE02-01-04Ñ?333333)@AREIA GROSSA/MEDIA (METRO) Å¡â„¢éAÀÃE02-01-04Ñ_ Aš™™™™™0@REJUNTE JUNTALIDER CINZA PLATINA (KG) ázÔ?ÀÃE02-01-04Ñ…@ìQ¸…k2@ARGAMASSA QUARTZOLIT **20KG** )\AÈÃE02-01-04Ñ:€?333333@ARAME GALVANIZADO N.16 (1 KG) Å¡â„¢é@ÃÃE02-01-04‘
CÀ@Ház®Ç8@FERRO 3/16 (4.2mm) CA60 12MTS ö(„@ØÃE02-01-04‘
AÀ@\ÂÂõ(ÃœS@FERRO 5/16 (8.0mm) CA50 12MTS
×SAØÃE02-01-04N®€?…ëQ¸@TORNEIRA JARDIM ESFERA 3/4 Ãõ¸@èÃE02-01-04N €?®Gázî?VEDA ROSCA 10MTS *TECNOFIT* ×£p?èÃE02-01-04¬€?'h@CAIXA D[ô]AGUA 1000LTS (GP FIBRAS) CCà ÃE02-01-04¬ã€?\ÂÂõ(ÃœL@LAVATORIO C/COLUNA TRADICIONAL BRANCO HáfBà ÃE02-01-04¬/ @333333÷?CONDUITE CORRUGADO 1/2 AMARELO (METRO) ázâ€>à ÃE02-01-04¬* @ÃÌÌÌÌÌ
@TE MARRON 3/4 TIGRE …+?à ÃE02-01-04¬>@@ÃT@REGISTRO GAVETA DECA 3/4 *C-40* ÞAà ÃE02-01-04¬Ô€?®Gáz^U@VALVULA HIDRA MAX CROMADA (DECA) ¤ðªBà ÃE02-01-04¬„À@R¸…ëQC@METROS DE TUBO MARRON 50MM (1 1/2)**TIGRE** {ÃŽ@à ÃE02-01-04¬°€?ÃÌÌÌÌL+@ADAPTADOR C/FLANGES 1.1/2 (TIGRE) ffZAà ÃE02-01-04¬2€?R¸…ëQ@TE MARRON REDUCAO 1 1/2 X 3/4 (TIGRE) \ÂÅ @à ÃE02-01-04¬E€?
×£p=
Eu não lembro bem a sintaxe, isto faz 23 anos que utilizei, nem tinha começado a faculdade ainda, mas dá para reproduzir no VB6.
Era parecido com o Enum. Algo como:
Public Enum MKV
nome
cpf
endereco
End Enum
A diferença é em nome, cpf, endereco era possÃvel definir o tipo e o tamanho (exemplo: string * 20 -> para string de 20 espaços)
Na leitura do registro no arquivo sequencial era assim:
line input #numero_do_buffer, MKV.
Assim, em MKV.nome viria o nome, em MKV.cpf viria o CPF e assim por diante.
Só não lembro bem as sintaxes, mas o caminho é por ai.
Quanto aos caracteres confusos, é porque é arquivo que tem que abrir com o RANDOM mesmo, dai virá certinho dentro do Enum (lembrando que não acredito ser bem o Enum, mas é algo bem parecido, só não lembro agora... isto é na época que eu me alimentava todo dia com toddynho e achava que estava super saudável).
Tudo de bom.
Citação:Colega MKV,
Já tive a oportunidade de lá nas antigas trabalhar com GWBasic (depois veio o QBasic como parte do MS-DOS 6.22).
Ao meu ver, o único jeito é você abrir o arquivo como RANDOM (sequencias randômicos). O que você pegar na variável de leitura lhe ajudará a entender o conteúdo, o qual não tem delimitadores fixos, você precisa saber o formato do registro.
Veja exemplos em:
http://www.o-bizz.de/qbtuts/gw-train/
http://www.antonis.de/qbebooks/gwbasman/open.html
http://www.divonasperi.it/divona/tam/tecnologia/dow-all/GW%20Basic%20%28inglese%29.pdf
http://www.antonis.de/qbebooks/gwbasman/chapter%205.html
Tudo de bom.
Citação:
Colega,
Eu não lembro bem a sintaxe, isto faz 23 anos que utilizei, nem tinha começado a faculdade ainda, mas dá para reproduzir no VB6...
Nessas horas que percebo que sou muito novo em todos os sentidos, tanto de idade como também na área de programação! haha!
Mas indo direto ao assunto, Zeuzebio, no VB.NET ainda é usado uma sintaxe igual. Só que usava o ENUN para avaliar se era Inclusão ou alteração, no caso de consulta de determinadas informações incluidas na tabela, era chamada a alteração, mas a ideia é essa mesma.
Public Type MKV
Data As Date
Valor As Double
Nome As String * 50
Codigo AS Double
End Type
O restante da leitura é feita conforme o Zeuzebio já postou.
Citação:O que o Zeuzebio está se referindo é a Structure (Type). é apenas um chute, mas pela distribuição dos registros parecem ser 4 campos, Data, Valor, Nome (descrição) e Código, creio que nesta ordem.
Faço minhas as palavras do Chaves (que, aliás, eu assistia naquele tempo):
isso, isso, isso!
ficou assim
Private Sub Command1_Click()
Dim dad As MKV
[ô];Open [Ô]MOV04.ARQ[Ô] For Input As #1
Open [Ô]MOV04.ARQ[Ô] For Random Access Read As #1
Do While Not (EOF(1))
Input #1, MKV
MsgBox dad.Data & [Ô] - [Ô] & dad.Valor & [Ô] - [Ô] & dad.Nome & [Ô] - [Ô] & dad.Codigo
Loop
MsgBox v
[ô] Close the file.
Close 1
End Sub
e um modulo
Public Type MKV
Data As Date
Valor As Double
Nome As String * 50
Codigo As Double
End Type
tenho o seguinte retorno [Ô]bad file mode[Ô]