paulo_jcg Posted October 25, 2009 at 12:48 PM Report Share #293281 Posted October 25, 2009 at 12:48 PM 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 Link to comment Share on other sites More sharing options...
M6 Posted October 25, 2009 at 06:36 PM Report Share #293314 Posted October 25, 2009 at 06:36 PM 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." Link to comment Share on other sites More sharing options...
paulo_jcg Posted October 26, 2009 at 12:29 AM Author Report Share #293353 Posted October 26, 2009 at 12:29 AM 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 😛 Paulo Gomes Link to comment Share on other sites More sharing options...
apocsantos Posted October 26, 2009 at 08:48 AM Report Share #293367 Posted October 26, 2009 at 08:48 AM 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" Link to comment Share on other sites More sharing options...
apocsantos Posted October 26, 2009 at 01:53 PM Report Share #293400 Posted October 26, 2009 at 01:53 PM 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" Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now