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

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