Unrecoverable error 37 : Exclusive Required

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ReinaldoFreitas
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 02 Jul 2005 15:39

Unrecoverable error 37 : Exclusive Required

Mensagem por ReinaldoFreitas »

Ola, alguem sabe o porque deste erro ..

Unrecoverable error 37 : Exclusive Required

acontece quando vou executar o programa !!

Uso clip53 + exospace + optedit

Obribgado..
Iniciante em Xharbour / Hwgui
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Este erro acontece porque vc colocou SET EXECLUSIVE OFF no inicio de seu programa.

Quando vc coloca este comando o aplicativo interpreta que voce esta trabalhando em modo SHARED ou compartilhado de suas tabelas, portanto requerendo um LOCK de registro ou de tabela para prosseguir.

Rastreie em seu aplicativo onde voce esta fazendo manutenção de alguma tabela sem travar o registro.

Para usar o seu sistema em modo compartilhado voce devera revisar os pontos em seu sistema onde voce grava informações em tabelas colocando LOCK nos registros que serão alterados nas tabelas.

Voce deve LOCK(travar) o registro antes de salva-lo na tabela e usar um COMMIT para liberar memória usada pelo registro.

Este erro também acontece quando voce executa PACK, ZAP, DELETE, DELETE ALL, REPLACE, REPLACE ALL, APPEND FROM, ETC.

Para os casos de PACK, ZAP, DELETE ALL, REPLACE ALL, APPEND FROM voce precisa travar toda a tabela usando FLOCK() ou USE tabela EXCLUSIVE.

Para os casos de DELETE, REPLACE basta travar o regsitro com RLOCK()

Código: Selecionar todos

...
if registro = "NOVO"
   append blank
else
   rLock()
endif
replace ...
replace ...
replace ...
commit
...
@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Unrecoverable error 37 : Exclusive Required

Mensagem por raquelreis »

Boa Tarde, estou com o mesmo problema ao compilar o programa
uso C nomeExecutável

Em anexo rmk
Anexos
C.RMK
(5.41 KiB) Baixado 265 vezes
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Unrecoverable error 37 : Exclusive Required

Mensagem por Pablo César »

Raquel, você já verificou todas as recomendações que o colega Rochinha fez ? Pois assim pelo script apenas não dá para saber nada e a questão baseia-se sobre algum erro no seu código fonte.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Unrecoverable error 37 : Exclusive Required

Mensagem por rochinha »

Amiguinhos,

Este erro também pode ocorrer caso a área que receberá os comandos não esteja ativa.

Por exemplo, abre-se duas tabelas, sendo que a ultima abertura sempre será vista como área ativa e então dá-se comandos de replace/append na primeira tabela sem selecionar sua área.

Código: Selecionar todos

use clientes shared new
use vendas shared new
Au usar new estou informando ao programa que abra a árealivre mais próxima, sem me importar em numerá-las.

No exemplo acima vemos que a área ativa é a que possui a tabela vendas e portanto só poderei dar comandos de manutenção nesta área.

Caso eu queira dar comandos na área da tabelas clientes, deverei fazer assim:

Código: Selecionar todos

select clientes
... // comandos
select vendas
Posso também dar os comandos de manutenção na área de clientes sem sair da área de vendas, assim:

Código: Selecionar todos

clientes->(dbAppend())
... // comandos
clientes->(dbCommit())
Mas esta forma é muito avançada, ou seja, geralmente usamos quando não queremos comandos em nosso código, tornando o processamento do código mais rápido, pois não existe a necessidade de interpretação dos comandos em runtime.

A forma didática de programação é a melhor forma de se manter um código legível e qualquer programador na mesma linguagem poderá entender e manter o código.

Exemplo:

Código: Selecionar todos

function teste()
    use vendas shared new
    use clientes shared new
    append blank
    replace nome with "JOSE"
    replace email with "irochinha@hotmail.com.br"
    commit
    return .t.
O código acima é entendido por nós, mas a maquina interpretará o seguinte:

Código: Selecionar todos

function teste()
    dbUseArea( .T., , "vendas", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbUseArea( .T., , "clientes", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbAppend()
    _FIELD->nome := "JOSE" 
    _FIELD->email := "irochinha@hotmail.com.br" 
    dbCommitAll()
    return .t.
Vejam que o pre-processador colocou _FIELD pois o mesmo se refere a um campo da tabela ativa e apesar de substituir o nome da tabela ficaria mais inteligível assim:

Código: Selecionar todos

function teste()
    dbUseArea( .T., , "vendas", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbUseArea( .T., , "clientes", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbAppend()
    clientes->nome := "JOSE" 
    clientes->email := "irochinha@hotmail.com.br" 
    dbCommitAll()
    return .t.
Caso fosse necessário salvar alguma informação na tabela vendas o ideal seria:

Código: Selecionar todos

function teste()
    dbUseArea( .T., , "vendas", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbUseArea( .T., , "clientes", , if(.T. .or. .F., !.F., NIL), .F.,  )  
    dbAppend()
    clientes->nome := "JOSE" 
    clientes->email := "irochinha@hotmail.com.br" 
    dbCommitAll()
    dbSelectArea( "vendas" ) // ou simplesmente SELECT vendas
    dbAppend()
    vendas->nome := "JOSE" 
    dbCommitAll()
    return .t.
Se eu não selecionar a área antes e executar os comandos de manutenção na tabela vendas com certeza obterei o erro de exclusividade requerida, já que o comando APPEND BLANK ou a função dbAppend(), quando as tabelas foram abertas em modo compatilhado, processam travamento(lock) do registro.

Observação: O erro de exclusividade requerida também pode ocorrer se um registro for travado mas os comandos forem aplicados aos registros anteriores ou posteriores. Um lapso que neste caso pode ocorrer quando o registro é travado mas o ponteiro é posicionado à frente ou atrás e os comandos de manutenção são lançados.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Unrecoverable error 37 : Exclusive Required

Mensagem por Eolo »

Raquel, em resposta ao seu email, dei uma pesquisada na net e, pelo jeito, esse erro (Unrecoverable Error 37: Exclusive required) parece bem famoso, especialmente para usuários do Exospace (embora também aconteça com o Blinker).

O erro aparece no carregamento do EXEs grandes, antes de qualquer operação com arquivos, então não tem a ver com o bloqueio de arquivos ou registros (embora o nome pareça sugerir isso). O problema, pelo que dizem, é excesso de entradas na tabela de símbolos, o que faz o EXE ser compilado normalmente, mas terminado imediatamente ao ser carregado, gerando a mensagem.

O que achei, em resumo, como sugestão pra resolver o problema: "1) diminua a quantidade ou reuse símbolos, declarando-os como locais. 2) diminua o número de PRGs no arquivo CLP/LNK, de forma a compilar MENOS e MAIORES arquivos OBJ. 3) troque o Exospace pelo Blinker ou recompile a aplicação inteira e as LIBs." Em um dos posts que achei, um cara diz que, exatamente ao colocar o 209o. PRG no LNK, o erro aparece...
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Unrecoverable error 37 : Exclusive Required

Mensagem por raquelreis »

Bom dia à todos,

Para não alterar o sistema, tentei linkar com o Blinker, mas está dando este erro.
"
BLINKER : link unnecessary as no input files have been changed
consorc.EXE (782 Kb) (0.3 seconds)
Programa muito extenso para ser colocado na memória

"

Comentei algumas funções e agora está dando este erro:
"

BLINKER : overlay opsize set to 40 Kb - minimum is 16 Kb (INITMENUS)
BLINKER : link unnecessary as no input files have been changed
consorc.EXE (782 Kb) (0.3 seconds)
Programa muito extenso para ser colocado na memória

"
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Unrecoverable error 37 : Exclusive Required

Mensagem por rochinha »

Amiguinha,

Abaixo mostro um exemplo de meu .LNK usado em minha versão DOS:

Código: Selecionar todos

#BLINKER OVERLAY THRESHOLD 256
#BLINKER OVERLAY UMB OFF
#BLINKER CACHE XMS 50%,1024
#BLINKER CACHE EMS 50%,1024
BLINKER INCREMENTAL OFF

#BLINKER EXECUTABLE COMPRESS
#MAP A,S

PACKCODE
PACKDATA

DEFBEGIN
   name        FatAll
   description 'Sistema de Faturamento Total'
   #exetype     Windows 3.1
   code        moveable discardable preload
   data        preload moveable
   stacksize   9500
   heapsize    1024
   segment     'PLANKTON_TEXT' nondiscardable
   segment     'EXTEND_TEXT'   nondiscardable
   segment     'OM_TEXT'       nondiscardable
   segment     'OSMEM_TEXT'    nondiscardable
   segment     'SORTOF_TEXT'   nondiscardable
   segment     'STACK_TEXT'    nondiscardable
DEFEND

FILE  NF,NFFU6,NFFU9,PE,ERRORSYS,REVISAO
FILE  NFCAD,NFI01,NFI02,NFI03,NFI031,NFI032,NFI05,NFI05t,NFI06,NFI07 
FILE  NFFAT,NFFAT01,NFFAT02,NFFAT03,NFFAT04,NFFAT05,NFFAT06,NFFAT07,NFFAT08,NFFAT09,NFFAT10,NFFAT13,NFFAT09a,NFFAT09c
FILE  NFFIN,NFFIN01,NFFIN02,NFFIN03,NFFIN04,NFFIN99
FILE  NFEST,NFEST01,NFEST04,NFCON01,NFCON02,NFCON04
FILE  NFUTL 
FILE  NFREL,NFRCL01,NFRCL02,NFRCL05,NFRCL06,NFRCL07,NFRCL09,NFRCL10,NFRELCLE,NFRELSER #,M****

LIB VISUAL,NFLIB,NANFOR,OSLIB,FAST

SEARCH BLXCLP52

OUTPUT NF
Use como base para montar o seu .LNK, não use o mesmo de sua versão anterior, remolde-o para uso com o BLinker.

A linhas que iniciam com # estão desativadas, veja no manual do BLinker como usá-las.

No bloco DEFBEGIN/DEFEND é possivel alteração da variável stack para melhoria do trato com variáveis e vetores no sistema.

Na linha LIB voce coloca o nome de todas as bibliotecas utilizadas por voce.

Na linha SEARCH é feita uma chamada de uma biblioteca de compatibilidade do BLinker com o Clipper.

Lembre-se que as pastas internas do BLinker estejam bem pateadas em sua sessão DOS.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Unrecoverable error 37 : Exclusive Required

Mensagem por raquelreis »

Bom dia rochinha,

Refiz o LNK, mas continua com o mesmo erro.
Onde estou errando.
Retirei algumas linhas, pois davam erro.
Coloquei em FILE todos os obj que tenho no meu RMK.
Thank's

Código: Selecionar todos

BLINKER INCREMENTAL OFF 

PACKCODE
PACKDATA

DEFBEGIN
 name    FatAll
 description 'Sistema de Faturamento Total'
 #exetype  Windows 3.1
 code    moveable discardable preload
 data    preload moveable
 stacksize 9500
 heapsize  1024
 segment  'PLANKTON_TEXT' nondiscardable
 segment  'EXTEND_TEXT' nondiscardable
 segment  'OM_TEXT'   nondiscardable
 segment  'OSMEM_TEXT'  nondiscardable
 segment  'SORTOF_TEXT' nondiscardable
 segment  'STACK_TEXT'  nondiscardable
DEFEND

FILE confun1,confun2,confind,consorc,con1100,con1200,con1240,con1300,con1313,con1400
FILE con1500,con1510,con1520,con1530,con1540,con1550,con1560,con1570,con1580,con151a
FILE con151b,con151d,con151g,con1600,con1700,con1800,con1900,con1a00,con1b00,con1c00
FILE con1d00,con2100,con2140,con2170,con2180,con2160,conprov,con2200,con26c7,con220d
FILE con220i,con2300,con2400,con2460,con2500,con2600,con2650,con2630,con2680,con26c5
FILE con26c6,con2681,con2700,con2760,con2740,con2800,con2900,con2920,con29201,con2930
FILE con2960,con2970,con2a00,con2a05,con2a06,con2b00,con2c00,con2c01,con2c0B,con26c0
FILE con2620,con2c08,con2670,con2c09,con2d00,con2015,con2016,con20161,con20162,con20163
FILE con20164,con20165,con20166,con20167,con3100,con3200,con3240,con3300,con3700,con3800
FILE con3a00,con3b00,con3c00,con3d00,con3e00,con3f00,con4100,con4120,con4130,con4150
FILE con415d,con4160,con4200,con4213,con4216,con421a,con421b,con421c,con421d,con421e
FILE con421f,con421g,con421h,con421h3,con4220,con4223,con4230,con4233,con4240,con4250
FILE con4260,con4270,con4280,con4290,con420a,con42a1,con42b1,con4300,con4330,con4301
FILE con4350,con4350a,con4370,con45f1,con45f2,con43b0,con4302,con430e,con430f,con4400
FILE con4500,con4520,con4522,con4527,con4528,con4530,con4543,con4560,con4564,con4569
FILE con4580,con4581,con4586,con4570,con45f0,con4600,con4670,con4690,con46A1,con46A2
FILE con4700,con4710,con4720,con4730,con4740,con4750,con4760,con4770,con4780,con5300
FILE con5600,con5700,con6100,retbcn,conseg,rotina,recibos,conrece,concomp,termo
FILE con5100,conntx,calperc1


SEARCH BLXCLP52

OUTPUT consorc
Agora está dande esse erro:
BLIKER 1102: no input files were specified
Como seu não tivesse nenhum arquivo para ser lincado....
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Unrecoverable error 37 : Exclusive Required

Mensagem por rochinha »

Amiguinha,

Depois de DEFEND voce deve chamar em FILE pelo primeiro .PRG de sua aplicacao, ou seja:

Código: Selecionar todos

DEFEND
	 
FILE consorc
Como o primeiro .PRg e o pai de todos os procedimentos ao linkar ele chamara as outras referencias e se o linker colocar qualquer um .PRG como inicial e possivel que de erro mesmo.

Ja em:

Código: Selecionar todos

DEFBEGIN
	 name    Consorcio
	 description 'Sistema de Controle de Consorcios'
Verifique se os .OBJ estao na pasta e se nao falta nenhum.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Unrecoverable error 37 : Exclusive Required

Mensagem por raquelreis »

Fiz as alterações e nada feito.

Vou tentar de Novo... desde o inicio.

Qualquer coisa aviso,

Obrigada a todos!!!
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Unrecoverable error 37 : Exclusive Required

Mensagem por rochinha »

Amiguinha,

Para que possamos lhe ajudar melhor, favor compactar o .LNK que voce montou e todos os .OBJ envolvidos e depois anexar o arquivo aqui neste tópico. Para mais detalhes de como anexar arquivos aqui no fórum, veja este tópico: https://pctoledo.org/forum/viewto ... =40&t=8000

E se possivel me diga qual o .OBJ que contem a entrada principal do sistema.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Unrecoverable error 37 : Exclusive Required

Mensagem por raquelreis »

Bom dia pessoal,

É o seguinte, depois de muitas tentativas,
Fiz o q vcs sempre vinham dizendo: "O sistema está muito grande..."
Começei a tirar uma funções, etc... E continuava...
Mas o engano foi meu, eu comentava no prg, mas não retirava o OBJ do LNK.
Então, começei fazendo isso, excluindo as referências dos OBJ.
Continuei com o Exoespace e o sistema, compilou, linkou e executou...
Preciso apenas filtrar melhor quais os obj que não preciso utilizar.

Obrigado à todos, vou continuar tentando usar o blinker 7, pois pelo que eu
entendi é melhor.

Feliz Ano Novo!!!
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Unrecoverable error 37 : Exclusive Required

Mensagem por Pablo César »

Obrigado à todos, vou continuar tentando usar o blinker 7, pois pelo que eu
entendi é melhor.
Melhor que o RTLINK, melhor que o ExoSpace: sem dúvidas. E sobre o BLINKER, quer meu conselho ? A primeira instância, apenas link de forma simples, só os prgs e libs que demandar e depois faça a otimização de uso de memória.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Unrecoverable error 37 : Exclusive Required

Mensagem por rochinha »

Amiguinha,

Não é preciso retirar .OBJ a não ser que os mesmos nem sejam usados no sistema.

Como voce não nos deu noção de como esta usando o sistema não podemos dar mais informações.

Por exemplo se voce nos informar que esta executando o sistema puramente em DOS, daremos definições de como compilar com o Blinker neste ambiente.

O Blinker possue otimizações onde ao ser executado ele pode, levar todo .EXE para memória ou somente partes dele.

Veja a diferente entre dois .LNKs com o mesmo propósito

Tudo junto:

Código: Selecionar todos

FILE NF,ERRORSYS,NFFUNCAO
LIB NFLIB,MOUSE,CT

    FILE NFCAD,NFI01,NFI02,NFI03,NFI04,NFI05,NFI06,NFI07, NFI08,NFI09,NFI10,NFI11,NFI12,NFI13,NFI14
    FILE       NFC01,NFC02,NFC03,NFC04,NFC05,NFC06,NFC07C,NFC08,NFC09,NFC10,NFC11,NFC12,NFC13,NFC14
    FILE NFFAT,NFFAT01,NFFAT02,NFFAT03,NFFAT04,NFFAT05,NFFAT06,NFFAT71,NFWA
    FILE NFFIN,NFFIN01,NFFIN02,NFFIN03,NFFIN04
    FILE NFEST,NFEST01,NFEST07
    FILE CTBILINC,CTBILI01,CTBILI02,CTBILI03,CTBILI04,CTBILI05
    FILE CTBILC01,CTBILC02,CTBILC03,CTBILC04,CTBILC05
    FILE CTBILREL,CTBILR01,CTBILR02,CTBILR04,CTBILR06,CTBILR07,CTBILR08,CTBILR11
    FILE CTBILR12,CTBILR13,CTBILR14
    FILE NFREL,NFRCL01,NFRCL02,NFRCL03,NFRCL04,NFRCL05,NFRCL06,NFRELCLE
    FILE       NFRFO01,NFRFO02,NFRFO03,NFRFO04,NFRFO05
    FILE       NFRTR01,NFRTR02,NFRTR05
    FILE       NFRFU01,NFRFU02,NFRFU03,NFRFU04
    FILE       NFRFA06,NFRFA07,NFRFA08,NFRFA10,NFRFA11,NFRFA12
    FILE       NFRFI13,NFRFI14,NFRFI18,NFRFI19,NFRFI20,NFRFI24
    FILE       NFRES25,NFRES25A,NFRES26,NFRES27,NFRES28,NFRES29,NFRES30,NFRES31,NFRES32,NFRES33,NFRES34

OUTPUT NF
Neste exemplo voce pode notar que o executável será gerado contendo todos os módulos .PRGs e quando for executado, tudo irá para a memória. Se a mesma nãofor bem gerenciada, realmente faltará espaço para o programa na memória e eventualmente, arquivos de dados não serão abertos e se forem, os indices não serão abertos. Desta forma o erro pode ocorrer se a área do .DBF em questão estiver aberta mas a tabela não for carregada.

Usando overlays:

Código: Selecionar todos

BLINKER OVERLAY DYNAMIC
BLINKER INCREMENTAL OFF

FILE NF,ERRORSYS,NFFUNCAO
LIB NFLIB,MOUSE,CT
BEGINAREA
    SECTION INTO NFCAD FILE NFCAD,NFI01,NFI02,NFI03,NFI05,NFI06,NFI07, NFI08,NFI09,NFI10,NFI11,NFI12,NFI13,NFI14,NFI15,NFI16,NFI17,NFI18,NFI19,NFI20,NFI21,NFI22,NFI22e,NFI23,NFI24,NFI25,NFI26,NFI27
    SECTION INTO NFCAD FILE       NFC07C,NFC01,NFC02,NFC03,NFC05,NFC09,NFC14
    SECTION INTO NFCAD FILE       NFCTBI01,NFCTBI02,NFCTBI03,NFCTBI04,NFCTBI05
    SECTION INTO NFCAD FILE       NFCTBC03
    SECTION INTO NFFAT FILE NFFAT,NFFAT01,NFFAT02,NFFAT03,NFFAT04,NFFAT05,NFFAT06,NFFAT07,NFFAT08,NFFAT09,NFFAT10,NFFAT13
    SECTION INTO NFFAT FILE       NFPRO01,NFPRO02,NFPRO04
    SECTION INTO NFFIN FILE NFFIN,NFFIN01,NFFIN02,NFFIN03,NFFIN04,NFFIN99
    SECTION INTO NFEST FILE NFEST,NFEST01
    SECTION INTO NFREL FILE NFREL,NFRCL01,NFRCL02,NFRCL05,NFRCL06,NFRCL07,NFRCL09,NFRELCLE,NFRELSER
    SECTION INTO NFREL FILE       NFRFO01,NFRFO02,NFRFO05,NFRFO07
    SECTION INTO NFREL FILE       NFRTR01,NFRTR02,NFRTR05,NFRTR07 
    SECTION INTO NFREL FILE       NFRFU01,NFRFU02,NFRFU05,NFRFU07
    SECTION INTO NFREL FILE       NFRFA06,NFRFA07,NFRFA08,NFRFA10,NFRFA10F,NFRFA11,NFRFA12,NFRFA13,NFRFA13A,NFRFA14
    SECTION INTO NFREL FILE       NFRFI13,NFRFI14,NFRFI15,NFRFI18,NFRFI19,NFRFI20,NFRFI22,NFRFI24
    SECTION INTO NFREL FILE       NFRES25,NFRES25A,NFRES26,NFRES27,NFRES28,NFRES29,NFRES30,NFRES31,NFRES32,NFRES33
    SECTION INTO NFREL FILE       NFCTBR01,NFCTBR02,NFCTBR04,NFCTBR06,NFCTBR07,NFCTBR08,NFCTBR11
    SECTION INTO NFREL FILE       NFCTBR12,NFCTBR13,NFCTBR14
ENDAREA
OUTPUT NF
Neste segundo exemplo veja SECTION INTO NFCAD FILE onde:

SECTION INTO - diz ao Blinker que deverá colocar todos o módulos após FILE dentro de um overlay de nome NFCAD. E assim por diante.

BLINKER OVERLAY DYNAMIC
Diz ao Blinker que cada pedaço do programa(overlays) deverá alocar o devido tamanho de memória para o seu uso no momento que for chamado.

Perceba que no segundo caso o executável terá em seu módulo principal somente NF,ERRORSYS,NFFUNCAO. enquanto que os outros módulos estarão internamente em overlays dinamicos em NFCAD, NFFAT,NFREL,...

Veja também que NFFUNCAO esta ao lado do .PRG principal( NF )o que indica que a mesma contém funções genéricas que poderão ser chamadas de qualquer overlays que estiver ativo no momento do uso.

Só não me recordo se existe algum comando que diz ao Blinker para criar overlays em separado, ou seja, haveria um .EXE e vários .OVL.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder