Página 8 de 18

Migrar Clipper para Harbour.

Enviado: 06 Dez 2014 10:23
por JoséQuintas
Aproveitando...
o EXE fica menor se usar -strip
E também menor se compactar usando -compr
A compactação é automática, mas dependendo de como obteve seu Harbour, precisa instalar o compactador UPX manualmente.

Migrar Clipper para Harbour.

Enviado: 06 Dez 2014 10:24
por Josmar dos Santos
Vamos lá...No Servidor, a execução é normal rápido como o papa légua. Nos terminais, notei que ao acessar o banco de dados ele está mais lento do que antes, ou seja, ao entrar na tela de cadastro, ele demora mais para abrir o mesmo.

Deu para entender?

Josmar

Migrar Clipper para Harbour.

Enviado: 06 Dez 2014 10:27
por Josmar dos Santos
O Harbour foi abaixando conforme explicação do PC Toledo desse mesmo tópico..

Josmar

Migrar Clipper para Harbour.

Enviado: 06 Dez 2014 10:39
por JoséQuintas
Isso não é comum.

O Avast pode causar isso.
Motivo: ao acessar a pasta do servidor, o antivírus primeiro verifica tudo da pasta antes de deixar o programa prosseguir.

Acho que o tratamento do Windows para programas DOS e Windows não é igual.
Agora em Harbour virou programa Windows.
Alguma coisa se altera, mas nada que pudesse causar isso.

Aproveitando:
Ontem fui em um cliente e Instalaram Avast num terminal.
Enquanto um terminal leva 1 segundo pra abrir o sistema, este com Avast demora mais de 60 segundos.
Nunca vi demorar tanto. Windows Server e terminal XP com Avast.

Migrar Clipper para Harbour.

Enviado: 06 Dez 2014 11:02
por Josmar dos Santos
Blz, vou olhar com mais detalhe. José, obrigado pela sua paciência em me orientar e um bom final de semana. Que Deus te abençoe. Um abraço..


Josmar

Migrar Clipper para Harbour.

Enviado: 26 Mar 2015 15:53
por akjota
Boa tarde pessoal,
inicie em Habour esta semana, mas meu único proposito é fazer meus velhos fontes clipper 5.3 rodarem normalmente em maquinas win8 64bits.
Até o momento é com bastante alegria e surpresa que informo que meu fonte foi compilado com sucesso usando a HMG 3.0.35.
Tudo funciona muito bem, esta configurado para somente CONSOLE e faz muito bem o trabalho de compilação.

Qual problema estou parado, na impressão, não imprime em uma impressora local HP LASER via USB, antes eu usava o DOSPRN neste casos, mas agora não funciona.

No geral, utilizo as seguinte instruções
ISPRINTER() -> verifica se a impressora existe
SET DEVICE TO PRINT
SET PRINTER TO PRN -> preciso desta pois é possivel imprimir em arquivo via sistema e isto garante a impressora como destino.

Não aparece erro nenhum no sistema, começa que o ISPRINTER() parece já não encontrar a impressora.

Não gostaria de ter que alterar todos os fontes, tenho muitos relatórios, como todos, tenho funções que controlam estas saídas para impressora ou arquivo ou tela, então se achar algo será muito bom.

Tenho um pouco de pressa, já olhei no forum e não achei, então estou escrevendo.
Obrigado por qualquer ajuda.
AkJOTA

Migrar Clipper para Harbour.

Enviado: 26 Mar 2015 16:17
por rubens
Boa tarde...

No harbour pode esquecer isprinter().
Não sei te falar quais links mas se pesquisar no fórum vai ver que tem alguns tópicos abordando o assunto. Se não tiver enganado o pessoal do fórum recomenda o uso da funcção printfileraw() ou printraw(). Não uso, não sei te falar o jeito de usar mas o caminho é por aí... é só dar uma pesquisada no fórum que você vai encontrar.
Quanto ao set printer to e set device to print eu não encontrei problemas na migração. Direciono para a lpt1 e funciona beleza...

Rubens

Migrar Clipper para Harbour.

Enviado: 26 Mar 2015 16:50
por Pablo César
akjota escreveu:inicie em Habour esta semana, mas meu único proposito é fazer meus velhos fontes clipper 5.3 rodarem normalmente em maquinas win8 64bits.
Até o momento é com bastante alegria e surpresa que informo que meu fonte foi compilado com sucesso usando a HMG 3.0.35.
Tudo funciona muito bem, esta configurado para somente CONSOLE e faz muito bem o trabalho de compilação.
Fico muito contente em saber.
akjota escreveu:No geral, utilizo as seguinte instruções
ISPRINTER() -> verifica se a impressora existe
SET DEVICE TO PRINT
SET PRINTER TO PRN -> preciso desta pois é possivel imprimir em arquivo via sistema e isto garante a impressora como destino.
Bom eu diria que essa questão de usar ISPRINTER() ou hb_IsPrinter(), não daria o resultado que você espera. Tanto no Clipper como no Harbour, esta função vai verificar tão somente e apenas a LPT1.

Veja esta nota:
Harbour's IsPrinter() does exactly the same thing as the Clipper
version, so it takes no arguments and only checks LPT1:
----------------------------------------------------------
Syntax
ISPRINTER() --> lReady
Returns
ISPRINTER() returns true (.T.) if LPT1 is ready; otherwise,
it returns false (.F.).
Description
ISPRINTER() is a printer function that determines whether the
parallel port (LPT1) is online and ready to print. ISPRINTER()
is hardware-dependent and, therefore, only works on IBM BIOS
compatible systems.
You can check ISPRINTER() to make sure the printer is ready before
you begin a print operation; however, if an error occurs during
the print operation, a runtime error is generated.
----------------------------------------------------------
On the other hand, HB_IsPrinter() does take a string as an argument, so
you can try that instead. This is what it looks like:

HB_FUNC( HB_ISPRINTER )
{
hb_retl( hb_printerIsReady( hb_parc( 1 ) ) );
}
Também está a questão que se você for gerar arquivo de impressão esta verificação é totalmente desnecessária, na minha opinião.
Gerar arquivo de impressão, é uma boa, resta ver como você está disponibilizando esse arquivo de impressão para o Spooler do Windows.

Com respeito a utilizar SET PRINTER TO PRN, você sabe me dizer se ele criou um arquivo chamado PRN ?
Porque na minha concepção, o comando deveria ser:

SET PRINTER TO "ARQUIVO.PRN" // (por exemplo)
SET DEVICE TO PRINTER

Depois disso, se a impressora na qual você quer imprimir for uma impressora que aceita o modo RAW.
Você pode checar através desta instrução:
https://pctoledo.org/forum/viewto ... 963#p76963
Daí você pode utilizar a função win_PrintFileRaw mas eu aconselho a imprimir em modo gráfico e não em modo texto. Desta forma você poderá imprimir em qualquer tipo de impressora.

Outra coisa prática a fazer é capturar a impressora USB para LPT1 e continuar como vinha fazendo.

Migrar Clipper para Harbour.

Enviado: 26 Mar 2015 21:51
por akjota
Pessoal, que retorno rápido, muito obrigado RUBENS E PABLO CESAR.

Quanto ao comando SET PRINTER TO PRN, não tem relação com criar arquivo, exerce para mim a mesma função do SET PRINTER TO LPT1, isso desde os tempos do SUMMER, seria como voltar para a impressora depois de ter feito um SET PRINTER TO ARQ.TXT

De qualquer forma, pela maneira como vocês colocaram as coisas preciso eliminar o uso do ISPRINTER() e trocar o PRN para LPT1, pode ser que funcione de fato e eu ficaria surpreso novamente, quem sabe. Apenas para saberem, usava estas funções no tempo que as impressoras usb eram apenas para usuários domésticos e as IP ninguem sabia o que era...LPT e COM era tudo que tinhamos.

Outra forma seria gerar um arquivo de impressão sempre, mas não sei muito bem como joga-lo no spool do windows, talvez este seja o caminho ideal, mas preciso ver como fazer.

Abusando: A função PROW() continua funcionando bem?

Bom, meu sistema sempre foi baseado em funções, então se eu acertar a alteração na função irá afetar todos os relatórios e impressões, espero ser bem sucedido.

Volto aqui para informar.
Muito obrigado novamente.

Migrar Clipper para Harbour.

Enviado: 01 Abr 2015 11:01
por akjota
Bom dia pessoal,

depois de um pouco de teste, cheguei a conclusão que seria mais produtivo se eu fosse logo para o relatório gráfico, como mencionou o Pablo, eliminando assim tudo que tenho entre o clipper e o windows, DOSPRN e TAME.

Estou fazendo da seguinte forma, resumidamente:

DISP := 10
nLINHAIMPRESSA := 15
SELECT PRINTER DEFAULT ;
ORIENTATION PRINTER_ORIENT_PORTRAIT ;
PAPERSIZE PRINTER_PAPER_LETTER ;
QUALITY PRINTER_RES_MEDIUM
START PRINTDOC
START PRINTPAGE
clinha := "imprimir isso aqui"
RELINHA(99,00,cLINHA,8)

e por ai vai, até

END PRINTPAGE
END PRINTDOC

FUNCTION relinha(l,c,texto,tipo)
IF l = 99
nLINHAIMPRESSA := nLINHAIMPRESSA + 3
@ nLINHAIMPRESSA,c PRINT texto ;
FONT "Courier New";
SIZE tipo
ELSE
@ l,c PRINT texto;
FONT "Courier New";
SIZE tipo
ENDIF
RETURN

Confesso que esta dando algum trabalho, mas mais no primeiro, para acertar as funções, depois a alteração não será grande.
A vantagem que estou vendo é poder imprimir em qualquer impressora no windows, inclusive uma tipo PDF que estou usando para testes.

No momento estou com duvida em relação ao comando END PRINTPAGE, como eu devo controlar as páginas do relatório?
- Não sei quantas paginas o relatório vai ter, claro.
- Como definir que cheguei ao fim da página e tenho que dar um EJECT? (esse comando não compilou)
- Antes eu usava PROW() e sabia se a próxima linha era a ultima disponível, existe algo parecido agora?

Obrigado por qualquer ajuda.

Migrar Clipper para Harbour.

Enviado: 22 Abr 2015 14:55
por CMartins
Olá Turma! Primeira mensagem. Espero estar postando no lugar certo...
Já migrei o primeiro programa e estou com 2 dúvidas:
a) O programa roda no XP e no W7 32bits, mas não no W98 SE, onde rodava nativo no DOS. Isto é uma limitação ou fiz algo errado?
b) Quando ocorre um erro em tempo de execução a tela fecha rápido e não dá tempo der ler a mensagem de erro. Como faço para ela se acalmar?
Grato... CMartins

Migrar Clipper para Harbour.

Enviado: 22 Abr 2015 17:42
por JoséQuintas
Até o W98 não existia o unicode, e no Harbour 3.0 o padrão também não usava unicode.
Lembro que eu forçava o Harbour usar unicode, e instalava o unicows.exe da Microsoft no Windows 98 pra não ter que fazer versões diferentes do EXE.
Depois esse unicode virou padrão do Harbour, já que o W98 caiu em desuso.
Vai ter que confirmar se dá pra desativar, e se o EXE vai funcionar nos dois, ou instalar o unicows.exe no W98 e usar mesma versão.
É que como o W98 não tem mais suporte, talvez seja difícil encontrar isso da Microsoft.

Quanto aos erros, não disse mas provavelmente está usando lib gráfica (gtwvt,gtwvw,gtwvg,etc.)
Nesse caso a opção é fazer uma errorsys.prg alternativa pra desviar os erros pra um arquivo txt.
Dependendo do erro, fica em hb_out.log

Apenas um acréscimo:
O programa roda em qualquer Windows a partir do XP, seja 32 ou 64 bits.
E no caso do W98, ou instala unicows.exe, ou cria versão especial pra W98.

Ainda tem:
http://www.microsoft.com/en-us/download ... px?id=4237

texto da página:
The Microsoft Layer for Unicode on Windows 95, 98, and Me systems (MSLU) helps to provide a layer over the Win32 API on Win9x so that you can write a single Unicode version of your application.
Pelo que dá pra entender, são as mesmas versões das APIs do Windows XP pra frente, em versão pra unicode.

Migrar Clipper para Harbour.

Enviado: 22 Abr 2015 19:13
por JoséQuintas
Nem parece da Microsoft, é muito pequeno.... rs
https://pctoledo.org/forum/viewto ... 990#p95990

Migrar Clipper para Harbour.

Enviado: 22 Abr 2015 21:44
por CMartins
Grato, José
Instalei o unicows.exe mas não funcionou. Vou continuar com as duas versões por enquanto...
Já na errorsys.prg fui lá e botei um inkey(0) antes do QUIT ! Ficou beleza!!!
Valew ......... CMartins

Migrar Clipper para Harbour.

Enviado: 27 Abr 2015 16:58
por CMartins
Olá José
Agora funcionou tudo.
Estava faltando a linha abaixo no xxxx.HBP:

-lunicows

Abs
CMartins