Jump to content
paulo_jcg

Importação de ficheiro de gwbasic [Resolvido]

Recommended Posts

paulo_jcg

Cumprimentos...

    Tenho um problema e não estou a conseguir encontrar solução para o mesmo. Deram-me um ficheiro de artigos e pediram que convertesse para outra base de dados.

  O que sei do ficheiro é que:

      - foi gerado por uma aplicação escrita em gwbasic

      - consiste em blocos de 64 caracteres em que 60 dos quais são em forma de texto, (que consigo interpretar sem problemas), no entanto existem os 4 bytes que por exclusão de campos sei que deverá ser o preço do artigo.

 

    O problema está nesse campo, não consigo interpretar o valor armazenado ex:

            fich (hex)  0x33333380  corresponde a preço 0,70

            fich (hex)  0x00001883  corresponde a preço 4,75

            fich (hex)  0x33334B83  corresponde a preço 6,35

            fich (hex)  0xCDCC5483  corresponde a preço 6,65

   

    Muito obrigado pela atenção.

Sem mais

Paulo Gomes

Share this post


Link to post
Share on other sites
M6

Esse ficheiro está codificado em UFT-8 ou algo assim?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
paulo_jcg

  O ficheiro é um ficheiro do antigo DOS, pelo que vi está em ASCII CP860 ou CP850, acho que o problema não tem a ver com o formato do ficheiro, mas sim dos dados.

  Pelo que vi o programador usa uma linha em gwbasic do tipo W=CVS(MID$(A, 51, 4)):WTP=WTP+W:WPTE=W

que segundo o que percebi lê o valor que preciso, mas precisava disso em .NET v :P

Paulo Gomes

Share this post


Link to post
Share on other sites
apocsantos

Pegas no velho GWBASIC e utilizas uma das muitas rotinhas para exportação .CSV

Bem depois de ter visto o código com mais atenção dou-te duas sugestões que me parecem lógicas:

1) Descobrires que modulo (ficheiro.bas) faz a listagem e modificares o codigo para te dar output em ficheiro ASCII (as is).

2) Mais dificil um bocadito, Descobrires a rotina que gera a listagem, acrescentares o caracter ";" entre os campos (eles devem estar com LOCATE, ou algo do genero). Mas essa é um pouco mais "Laborosa".

De qualquer das formas desejo-te boa sorte.

Mais uma Observação:

Para te facilitar a vida a editar o codigo, ele pode ser editado com o velho QBASIC do DOS, desde que gravado com a opção ",a"

Save "listagem.bas", a

Assim podes editar com o QBASIC ou qualquer outro editor ASCII, e continuar a executar/interpretar no GWBASIC.

Cumprimentos

A. Santos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
apocsantos

Cumprimentos...

    Tenho um problema e não estou a conseguir encontrar solução para o mesmo. Deram-me um ficheiro de artigos e pediram que convertesse para outra base de dados.

  O que sei do ficheiro é que:

      - foi gerado por uma aplicação escrita em gwbasic

      - consiste em blocos de 64 caracteres em que 60 dos quais são em forma de texto, (que consigo interpretar sem problemas), no entanto existem os 4 bytes que por exclusão de campos sei que deverá ser o preço do artigo.

 

    O problema está nesse campo, não consigo interpretar o valor armazenado ex:

            fich (hex)  0x33333380  corresponde a preço 0,70

            fich (hex)  0x00001883  corresponde a preço 4,75

            fich (hex)  0x33334B83  corresponde a preço 6,35

            fich (hex)  0xCDCC5483  corresponde a preço 6,65

Caro Paulo,

Como no post anterior ficou visivel, estive a debruçar-me sobre a matéria. Porquê a abordagem por bytes? É complexa, morosa, e na minha opinião consumidora de recursos. É quase como para ir do Porto a Lisboa, traçar uma rota que passe por Madrid. Gostava de saber o raciocinio por detraz da abordagem que fez ao problema, para poder enriquecer os meus conhecimentos.

Eu pessoalmente optaria por uma abordagem "invasiva", uma vez que GWBASIC é "Ancient Tech", e consequentemente uma linguagem interpretada, tentaria ver qual o file que ele chama para ler e colocar num dispositivo de output a listagem, e inseria modificações no codigo de forma a formata-lo tipo CSV ou algo do genero com ( ; ). Mas é apenas a minha visão das coisas... Ao gerar um output deve existir sempre instruções do tipo

Print

para ecrã, ou

LPrint

para impressora, nesse caso basta ver quais os nomes das variaveis que o programador deu a cada campo, e acrescentar na instrução de impressão nos devidos locais o seguinte:

 + ";" + 

  em que basicamente vai adicionar o caracter ( ; ) em espaços vazios entre os campos, de forma a delimita-los.

O Codigo que enuncia no seu segundo post trata-se de um codigo aparentemente destinado a converter escudos a euros. Provavelmente o codigo que gera o output deve estar noutro ficheiro.

Cumprimentos.

A. Santos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.