Blinker - Ajuda

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

imperador
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 23 Mar 2009 22:07
Localização: sp - sp

Blinker - Ajuda

Mensagem por imperador »

Colegas, uso o seguinte para linkar com o Blinker 7

# CCA.LNK
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F99;E1000
FILE 1,2,3,4,5,6,7,GERTEC,VESA256,CLIPGR50,__WAIT,ERRORSYS,KEYTEC,CODIF
OUTPUT CCA
LIB BLXCLP52,CTP,ORBIS
SEARCH CLBC,CLBC50,CLBCMAT

Não posso usar o modo protegido, pois uso algumas LIBs que não permitem isto, e este EXE está homologado e não posso fazer grandes alterações sem passar por nova homologação, o que custaria muito tempo e dinheiro.

Ao final da link é apresentada uma mensagem que o exe necessita 413 kb para executar, mas na realidade tem que ser perto de 600kb livres.

Seria possível criar algo para diminuir o tamanho da memória requerida?

Abraços a todos...

Imperador
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Blinker - Ajuda

Mensagem por Maligno »

Se você não pode usar o modo protegido em função dos problemas com suas bibliotecas, porque está usando as bibliotecas BLXCLP52 e CTP, que são para o modo protegido?
Para o modo real, a biblioteca BLXCLP52 não é usada e deve-se usar o arquivo CT.LIB para a biblioteca CATools.

Não dá para fazer muita coisa sem entrar no modo protegido. Você não disse que versão do Windows está usando. Tampouco disse se está tendo problema de memória, e se é constante ou esporádico.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Blinker - Ajuda

Mensagem por alxsts »

Olá!
imperador escreveu:Não posso usar o modo protegido, pois uso algumas LIBs que não permitem isto
Mas você está usando... a CTP.LIB é para modo protegido.

Segue um exemplo de LNK com Blinker. Tem alguns parâmetros a mais em relação ao teu. Teste e veja se muda alguma coisa.

Código: Selecionar todos

Blinker Incremental Off
Blinker Cache EMS 50%,50%
Blinker Cache XMS 50%,50%
Blinker Link EMS ON
Blinker Link XMS ON
Blinker Exec Clipper //Dynf:8 //F:254
Blinker Exec Comp 1
Blinker Exec Exte
Blinker Memo Pack 60
Search BlxRatex
Search BlxClp52
Blinker Incr Pad 256
Blinker Over Page On
Blinker Over Opsi 60 
OutPut < Seu Executável###############>

# seus OBJ
FILE 
FILE 
FILE 
FILE 

FILE MSGPOR
FILE TIMESLIC
FILE WFULLSCR

#FILE CLD.LIB

LIB CT,CLIPPER,EXTEND
//LIB CTP52,CLIPPER,EXTEND,VL2

Outra opção seria segmentar o executável com BEGIN AREA / END AREA
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Blinker - Ajuda

Mensagem por Maligno »

BLXRATEX também é para o modo protegido e o arquivo BLXCLP52 também deve ser eliminado desse script.
Inclusive, o comando BLINKER EXE COMPRESS com fator 1 dá o máximo de compressão. E a descompressão é feita em memória. Talvez seja melhor deixar em 9.

Aliás (ainda dependendo de saber qual versão do Windows), talvez pudesse ser feito algum ajuste no boot para liberar mais memória.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
imperador
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 23 Mar 2009 22:07
Localização: sp - sp

Re: Blinker - Ajuda

Mensagem por imperador »

Agradeço aos colegas pelas respostas. Quanto ao uso da CPT e BLXCLP52 o Blinker já resolve isto e nãos as coloca quando voce não habilita o EXE EXTENDED, assim nunca tive problemas quanto a sua colocação. Fiz alguns testes com o Scripts que foi postado, mas eles usam EXE EXTENDED e no meu caso específico quando uso isto tenho erro de DPMI, pois acho que algumas LIBs que uso não podem ser linkadas em EXTENDED. Eu uso o sistema em DOS puro e não tenho Windows na máquina, uso por BOOT remoto e já tenho configurado o CONFIG.SYS do DOS no seguinte modo: C:\DOS\HIMEM.SYS e C:\DOS\EMM386.EXE NOEMS NOVCPI, também tenho como C:\DOS\EMM386.RAM e já tentei outras formas pelo memmaker, assim tenho a memória toda liberada, não estou tendo problemas de memória do EXE, o que ocorre é que gostaria de diminuir a quantidade de memória utilizada, para que pudesse colocar mais alguns programas residentes na memória e continuar rodando o programa com uma menor quantidade de memória disponível de carga. Não sei se isto é realmente possível sem usar o modo protegido. Se alguem tiver alguma informação sobre isto, desde já, meus agradecimentos.
imperador
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 23 Mar 2009 22:07
Localização: sp - sp

Re: Blinker - Ajuda

Mensagem por imperador »

Quanto ao uso do EXE COMPRESS 1 ou qualquer outro valor, já tentei usar, mas acho que este função causa alguma estabilidade no programa ou no uso da memória, pois com este comando o programa fisca instável e fecha sem qualquer erro, mesmo eu salvando dos erros em LOG, nada é mencionada no LOG, assim considero que talvez seja realmente uma instabilidade do EXE quanto do uso da memória.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Blinker - Ajuda

Mensagem por Maligno »

Erro de DPMI não significa necessariamente erro no seu programa, com relação à bibliotecas utilizadas. Imaginei fosse Windows (é mais comum), mas em se tratando de DOS, é necessário habilitar a memória extendida na máquina. Nem lembro como fazer isso. Mas talvez você possa sim utilizar o modo protegido. Aí o consumo de memória será muito otimizado.

Agora, se você não está tendo erro e apenas quer garantir mais memória para o uso de programas residentes, meu conselho: use esses programas. SE der erro, aí sim trate o erro que aparecer, para não perder tempo com algo que talvez nunca aconteça.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
imperador
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 23 Mar 2009 22:07
Localização: sp - sp

Re: Blinker - Ajuda

Mensagem por imperador »

Obrigado colega pela resposta

Mas a memória está sim perfeitamente configurada no DOS, realmente quando tento colocar um programa residente antes do meu, ai sim não consigo mais rodar por falta de memória. No windows também acontece igual, a mesma coisa, se eu rodar na mesma janela. Quanto ao erro de DPMI, eu imaginei que seria algum problema de LIB imcompativel com modo protegido, o programa nem mesmo roda, veja a tela de CARGA no windows.

*********************************************************************************************
BLX286 : 1313 : exception error 0D : general protection fault, code = 0000h

Active host is DPMI (v7.00 iP6 15360 Kb)

Reg Value Limit Base Flags Segment Module File
CS 023F 1651 02C2E58C FB00 08 CCA E:\FONTES\CCA1\CCA.EXE
DS 0000 ****
ES 0367 93FF 02C2518C F300 ****
SS 0297 FFFF 02B96524 F300 13 CCA E:\FONTES\CCA1\CCA.EXE

Código: Selecionar todos

 1E 33 C0 8E D8 B9 FE 00 [IP] F3 A5 A1 84 00 8B 16 86 00 2E

[Registers]  AX=0000  BX=0200  CX=00FE  DX=0367   CS:IP=023F:14CF
             SI=0004  DI=91AA  BP=C61C  SP=C608
             FL=3246  NV UP EI NT PL ZR NA PE NC

[Stack value SS] 0247 0000 0367 0200 6CF6 C65D 91A6 0000 0367 C61C 14B3 023F
            [SP] 0297 C65D 6CF6 AE90 0257 0000 C65D 6CF6 C65D 0082 C624 A926

[Stack frame SS] 14B3 023F 0297 C65D 6CF6 AE90 0257 0000 C65D 6CF6 C65D 0082
            [BP] C624 A926 0257 0000 C62E AEEF 0257 0000 B260 0000 2994 0247
*******************************************************************************************************
Eu realmente não sei o que é, mas se tirar o EXE EXTENDED aí sim funciona normal, mas a memória de carga fica muito grande, dai não consigo rodar programa residentes antes do meu PRG.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Blinker - Ajuda

Mensagem por alaminojunior »

Isso tá com cara de que alguma lib, ou alguma função de alguma lib, está azedando o processo.
Lembra de ter incluído alguma nova rotina ou função contida dentro de alguma lib ?
Experimente inverter a ordem delas dentro do script. Aliás, posta ele para que a gente possa dar uma pescoçada.

Para habilitar a memória extendida no DOS, use o seguinte:

Código: Selecionar todos

[config.sys]
device=c:\dos\himem.sys
device=c:\dos\emm386.exe ram 2048 / ou outro valor, depende de quanto a máquina tem 
No autoexec.bat coloque na frente dos comandos o LH.
Desta forma o MS-DOS tenta colocar o programa na memória alta, liberando mais memória convencional.

Inclusive ele é linkado com Blinker 7, modo protegido e roda chuchú beleza. Eis o script.

Código: Selecionar todos

Blinker Incremental Off
Blinker Procedure Depth 50
Blinker Exec Clipper //F:100 //E:2048
Blinker Exec Comp 1
Blinker Exec Exte
Blinker Memo Pack 10
Search BlxClp53
OutPut Gerente.exe
File reta,timeslic,cdxlock,mapa,cmxfun,mpar,msgpor
Libr Llibg,Fast,Apibli,Llibt_cy,Classy,_dbfcdx,dbfcdx
Eu ainda faço uso destes comandos num cliente que usa um sistema meu em Clipper com LLIBG.
Enfim, dê uma boa revisada no seu código, variáveis private e public, salvamento de telas, etc...
Às vezes o seu sistema não está fazendo um bom uso da memória do pc.

Aliás, só pra constar, este cliente é especial:
Servidor Win2000 Server Celeron 430 512MB Ram
A rede ainda é cabo coaxial, um "must"!
O pc onde tem o PDV, já em xHarbour, é Windows XP.
O terminais restantes, são 386, 486, K6II, tinha um 286 que queimou há alguns anos. Mas tudo MS-DOS com Lan Manager 2.2c.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Blinker - Ajuda

Mensagem por asimoes »

Olá,

Já passei por este problema, verifica se a seguinte linha no autoexec.nt está habilitada:

REM Instalar o suporte DPMI
lh %SystemRoot%\system32\dosx

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder