Página 3 de 19

Convertendo Sistema do GASPRO para Harbour

Enviado: 27 Abr 2011 21:03
por Alexandre Silva
Eu é que agradeço a todos... :{
Ha uma semana comecei com harbour, tendo que converter meu maior projeto. que é feito em gas. por isso tem muitas funcoes que nao foram escritas por mim, fora a LIB que nao está 100 %
Essa dos browses achei que nao tinha jeito..
Nao me importo de alterar apos o gas gerar os fontes.. ja tinha que fazer ajustes..

Hoje fiz os primeiros testes no cliente, codigo de barras, mandar e-mail, impressao,
alguns ajustes, tá quase fechado.

Um Problema que senti, foi que nao posso atualizar o sistema, se tem alguem usando..antes bastava que o micro onde fosse atualizado estivesse fora.. tem mais de 20 usuarios usando, será que tem alternativa ??

Peço ao Moderador, se possivel, mudar o titulo para algo como, Convertendo GASPRO, ja que varios assuntos foram tratados aqui

Voces que baixaram o aplicativo, se gerarem um relatorio em aquivo/video e ver na tela ou ALT_V
Funcao browse_rel() do rom_proc.prg , vejam que aparece um coluna de caracteres
?
?
?
?
O que esta gerando isso ?

Convertendo Sistema do GASPRO para Harbour

Enviado: 27 Abr 2011 21:26
por Pablo César
Peço ao Moderador, se possivel, mudar o titulo para algo como, Convertendo GASPRO, ja que varios assuntos foram tratados aqui
Feito ! Também achei necessário mudar o título, obrigado pela sua iniciativa.

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 27 Abr 2011 21:35
por sygecom
Alexandre Silva escreveu: Um Problema que senti, foi que nao posso atualizar o sistema, se tem alguem usando..antes bastava que o micro onde fosse atualizado estivesse fora.. tem mais de 20 usuarios usando, será que tem alternativa ??
Uma maneira de contornar isso é renomear o arquivo que está sendo usado na rede e colocar no AR o novo EXE. Não é a melhor solução, mas funciona.

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 29 Abr 2011 09:37
por Jairo Maia
Alexandre, eu não consegui gerar relatorio usando o que vc enviou. Quando pede para gerar, ele simplesmente não gera, e não mostra erro.

Com minha aplicação não consigo ver o que vc diz, pois como já disse, ela tem muita alteração e não é versão 4.

Como posso gerar aqui pra visualizar?

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 29 Abr 2011 12:26
por Alexandre Silva
Na versao que coloquei ai (p1 e p2) apenas compile normalmente com harbour, eu uso essa bat R.BAT
que invoca o hbmk2
nao gere novamente no GAS, use as fontes que estao ai...
Entre no sistema
Vá em rel produtos. tire do Romaneio 2 (por.exemplo) gere em arquivo/video
veja os ? (pontos de interrogacao) no final do arquivo..
se abrir com outro editor ou gerar PDF com o Dosprint, na há problema

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 29 Abr 2011 14:38
por Jairo Maia
Olá Alexandre,

Ok, não tive problema pra gerar o exe. Inclusive, para desencargo, limpei a pasta que usei para fazer os testes do browser, descompactei novamente os fontes para descartar alguma possivel alteração que havia feito enquanto verificava o problema e recompilei.

Nada mudou, e não consigo ver o problema.

Convertendo Sistema do GASPRO para Harbour

Enviado: 29 Abr 2011 18:38
por Alexandre Silva
Comigo acontecem coisas estranhas.. :%
essa do caracter
?
?
?

Além disso as vezes (10 %),quando entro no sistema Gas (na versao em Harbour)
as opcoes do Menu ficam piscando... tb uso setmode(25,80) mas nao adianta.

PS: Como colocar a imagem da tela, sem ser anexo ??
Nota de Moderação:
por Pablo César: Foi substituído o arquivo xls que estava em anexo pela imagem abaixo
Veja a sua tela, primeiro foi hospedada e depois disponibilizado o link + TAG
Imagem

Convertendo Sistema do GASPRO para Harbour

Enviado: 29 Abr 2011 20:03
por Pablo César
?
?
?
?
O que esta gerando isso ?
Alexandre, verifique o PRINTERS.DBF, o GAS e provavelmente na sua palicação esteja utilizando esse arquivo para obter os comandos de impressão. Veja se existe algum comando (provavelmente: line_feed ou algo assim) que contenha "?"
PS: Como colocar a imagem da tela, sem ser anexo ??
Precisa primeiramente a imagem estar hospedada na internet. Pode utilizar o 4Shared ou qualquer outro site de armazenamento. Depois de estar hospedada, você pega o link da imagem, cola na mensagem aqui no fórum, marca o bloco desse link e clica no botão "Img".

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 30 Abr 2011 01:54
por Alexandre Silva
Oi.
Voce tem a funcaao mudafonte() e a naopisca(), ? porque na versao da lib que eu tenho essa funcoes nao voltam nada..
acho que pode ser alguma coisa de fonte...
Já tentei por horas, e só no GAS com harbour dá esse problema ..

?
?
?
?

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 30 Abr 2011 12:18
por Jairo Maia
Olá Alexandre,

Nos fontes que vc enviou está como relatório, por acaso em seu projeto real está como etqueta?

Caso seja isso, há diferença.

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 30 Abr 2011 15:16
por Alexandre Silva
E relatorio.. olha o que acabei fazendo...na funcao proc_monta_lin do sist_proc.prg

Código: Selecionar todos


STATIC PROC MONTA_LIN(qtlin_,qttab_)  // le/imprime linhas do arquivo binario
LOCAL t_, i_, x_, j_, lin_, buf_, tambuf_, ini_, fim_, qts_:=0,;
      tp_cmd:="pcomtcompc20tc20pelitelipenftenfpexptexppde8tde8landport"
IF qtlin_!=0                                     // quer le outras linhas?
   tambuf_=MIN(ABS(qtlin_)*2700,32000)           // buffer maximo do tamnho das linhas
   IF qtlin_<0 .AND. offset_ini>1                // quer voltar linhas e nao esta no topo
      IF offset_ini<tambuf_                      // se o tamanho buffer e maior do que
         tambuf_=offset_ini                      // ja foi lido, ajusta seu tamanho
      ENDI
      FSEEK(area_,offset_ini-tambuf_)            // posiciona poteiro para a leitura
      buffer_=SPAC(tambuf_)                      // inicializa o buffer e
      FREAD(area_,@buffer_,tambuf_)              // le o arquivo...
      buffer_=STRTRAN(buffer_,CHR(12)+CHR(13),CHR(13)+CHR(10))
      tambuf_++                                  // incrementa tamanho do buffer
      buf_=tambuf_                               // salva tamanho original
      FOR t_ = qtlin_ TO -1                      // faz p/ todas as linhas requeridas
         IF tambuf_ > 1                          // se nao esta no inicio do buffer
            tambuf_-=3                           // tira o CR+LF do fim da linha
            i_=tambuf_                           // acha o ultimo CR+LF
            tambuf_=RAT(CHR(13)+CHR(10),SUBS(buffer_,1,tambuf_))
            tambuf_=IF(tambuf_>0,tambuf_+2,1)    // se achou desconta o CR+LF
            IF l_arq[maxlin_]!=CHR(0)            // se a linha a excluir for do arquivo
               offset_fim-=LEN(l_arq[maxlin_])+2 // decrementa seu tamanho do offset do
            ENDI                                 // fim do arquivo (acresentando o CR+LF)
            AINS(l_arq,1)                        // insere um linha no top do arranjo
            i_=i_-tambuf_+1
            l_arq[1]=SUBS(buffer_,tambuf_,i_)    // inicializa a linha com a linha do arq
            qts_--                               // qtde de linhas do scroll
         ELSE                                    // se chegou no inicio do tamanho do
            EXIT                                 // buffer lido, cai fora...
         ENDI
      NEXT
      offset_ini-=buf_-tambuf_                   // ajusta offset da linha inicio da janela

   ELSEIF l_arq[2]!=CHR(0)                       // quer avancar linhas e nao esta no fim do arq
      FSEEK(area_,offset_fim)                    // posiciona o ponteiro na ultima lin lida
      IF offset_fim+tambuf_>fim_arq_             // se o resto do arquivo e menor do que
         tambuf_=fim_arq_-offset_fim             // o tamanho do buffer, ajusta seu tamanho
      ENDI
      buffer_=SPAC(tambuf_)                      // inicializa o buffer e
      FREAD(area_,@buffer_,tambuf_)              // le o arquivo...
      buffer_=STRTRAN(buffer_,CHR(12)+CHR(13),CHR(13)+CHR(10))
      FOR t_ = 1 TO qtlin_                       // mostra proximas linhas requeridas
         IF l_arq[1]!=CHR(0)                     // se for uma linha lida do arquivo
            offset_ini+=LEN(l_arq[1])+2          // ajusta offset do inicio
         ENDI
         ADEL(l_arq,1)                           // apaga a 1a. linha do arranjo
         qts_++                                  // qtde de linhas que sera feita o scroll
         IF LEN(buffer_)<3                       // se nao tem mais linha para montar a tela
            l_arq[maxlin_]=""   // CHR(0) 
***
**     se colcar chr(0) ficava ponto de interrogacao na tela
**
            IF l_arq[2]=CHR(0)                   // se o fim do arq esta na 1a. linha
               EXIT                              // nao tem mais linha para mostrar
            ENDI
         ELSE                                    // caso contrario pega linha corrente
            l_arq[maxlin_]=PARSE(@buffer_,CHR(13)+CHR(10))
            offset_fim+=LEN(l_arq[maxlin_])+2    // ajusta offset do fim da janela
         ENDI
      NEXT
   ENDI
ENDI
i_=0
FOR t_ = 1 TO maxlin_                            // pega o tamanho da maior linha
   i_=MAX(i_,LEN(l_arq[t_]))
NEXT
IF (qttab_<0 .AND. tablin_>1) .OR.;              // quer rolar horizontalmente?
   (qttab_>0 .AND. tablin_<i_-10)
   tablin_+=qttab_                               // soma/diminui tabulacao atual
   qts_=maxlin_                                  // forca remontagem de toda a janela
ENDI
IF qts_!=0                                       // se leu alguma linha
   SCROLL(lsup_,csup_,linf_,cinf_,qts_)          // rola a tela
   ini_=IF(qts_>0,maxlin_-qts_+1,1)              // inicio e fim das linhas
   fim_=IF(qts_>0,maxlin_,ABS(qts_))             // que foram lidas
   i_=cinf_-csup_+1                              // tamanho da janela
   FOR t_=ini_ TO fim_                           // imprime linhas lidas
      lin_=l_arq[t_]
      IF !EMPTY(lin_) .AND.!OK_PRINT(lin_)        // tem caraceter de controle?
         IF AT(" "+CHR(8),lin_)>0                // tira efeito especial da frente da linha
            lin_=SUBS(lin_,AT(" "+CHR(8),lin_)+2)
         ENDI
         FOR j_=1 TO 56 STEP 4                   // testa todos os carc de controle
            x_="drv"+SUBS(tp_cmd,j_,4)             // monta o nome do efeito
            x_=&x_.
            IF !EMPTY(x_)                          // tem efeito configurado?
               lin_=STRTRAN(lin_,TRANS(&x_.,""),"")   // retira-o da linha
            ENDI
         NEXT
      ENDI
      @ lsup_+t_-1,csup_ SAY SUBS(lin_,tablin_,i_)
   NEXT
ENDI
buffer_=""
RETU

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 03 Mai 2011 18:44
por Jairo Maia
Olá Alexandre,

Vi a solução que vc deu para o relatório... Mas "ainda" não tive esse problema, meus fontes tem diferença.
Alexandre Silva escreveu:Voce tem a funcaao mudafonte() e a naopisca(), ? porque na versao da lib que eu tenho essa funcoes nao voltam nada..
acho que pode ser alguma coisa de fonte...
Veja na LIB do gas, que elas estão neutralizadas, porém, quanto a NAOPISCA, descobri por acaso um atalho, mas também não tenho a solução. Quando começa a piscar o menu, basta vc pressionar ALT+TAB, exibir a tela do windows e voltar. Quando volta o vagalume some.

Re: Compactar arq. com DBT

Enviado: 04 Mai 2011 20:34
por Alexandre Silva
Opa..
Essa de piscar é bem raro e sempre em da/tela cheia..

Hoje coloquei a versao para rodar no cliente...
Maior problema
1-Eliminar Reg.Apagados, Se o Arquivo tem arquivo DBT na compactacao aparece arq.nao encontrado Arquivo.SMT
O sistema cai e o arquivo em questacao fica corrompido, perda total..
Como tratar os DBT no Harbour ?

2-Mudar o sistema com os usuarios usando.. O servidor é Seven 64, as estacoes seven 32
vc pode até renomerar o aplicativo para outro nome e trocar o executavel..
mas algumas estacoes na entrada do sistema dá a msg:
Outro usuario acessando arquivo Parametros, ai vc insiste um pouco e acaba entrando..
E voce nao consegue apagar o arq. que foi renomeado até que o usuario saia do sistema.

3-Supondo que a saida esteja para Epson em LPT2, e naquele PC nao tenha LPT2, se o usuario escolher Arquivo/Video, o arquivo é gerado. mas no final quando for usado o comando set printer to (drvporta)
Erro Term/2014, Erro no DOS Numero 2, arquvo LPT2., claro a porta nao existe..
Como vc faria para contornar isso de maneira generica..

4-Nao dá para usar o TAMEDOS, entao fica sem a tela cheia com opcoes de Fontes, etc.

Mas o problema maior é a compactacao de arquivo com DBT

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 05 Mai 2011 16:04
por Jairo Maia
Olá Alexandre,
Alexandre Silva escreveu:Hoje coloquei a versao para rodar no cliente...
Maior problema
1-Eliminar Reg.Apagados, Se o Arquivo tem arquivo DBT na compactacao aparece arq.nao encontrado Arquivo.SMT
O sistema cai e o arquivo em questacao fica corrompido, perda total..
Como tratar os DBT no Harbour ?
Verifiquei rapidamente essa questão, mas eu acho que vc não atualizou sua LIBG2.PRG ainda. Pelo menos quando vc enviou os dados ela estava errada para a forma que vc trabalha. Vc esta com o RDD DBFNSX.

A lib atual, está escrita para o RDD DBFCDX.

Os Arquivos Memo para o seu caso são SMT e não FPT. Altere a função: EXTENSAO(xArg1), no arquivo LIBG2.PRG da seguinte forma:

Código: Selecionar todos

Function EXTENSAO(xArg1)

   Local xVar1
   xVar1:= Upper(indexext())
   xArg1:= IIf(xArg1 = Nil,.T.,xArg1)
   If (!xArg1)
      If (xVar1 = ".NSX")  // de .CDX para .NSX
         xVar1:= ".SMT"    // de .FPT para .SMT
      Else
         xVar1:= ".DBT"
      EndIf
   EndIf
   Return xVar1
Altere essa função e veja se funciona. Aqui fiz a compactação usando seu exemplo e funcionou.

Re: Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Mai 2011 02:00
por Alexandre Silva
Amigo. Agradeco sua atencao..e paciencia...
To sofrendo muito para passar o gas para harbour..

No caso deu certo pra vc, porque nao tem arquivos memo no exemplo que te passei..
estou anexando outro...ok
parte 1
xx.rar
(65.11 KiB) Baixado 577 vezes
parte 2
xx2.rar
parte 2 (gas com arq.dbt)
(87.13 KiB) Baixado 426 vezes

Tenho a seguinte colocacos
1- no caso da tua funcao acho que se for .NSX deve ser DBT nao é ??

2- Fiz com a sua funcao e depois mudei, se for NSX usa DBT, mesmo assim da o mesmo erro do bendito .SMT
se vc compilar o anexo e compactar vai ver que o exigencia do SMT aparece na funcao USEARQ()

3- Como ja usava NSX no blinker, e continuo no Harbour teria mais alguma coisa para mudar na GASLIB