Solucionando erros do BDE relacionados a memória ($210D, $2500, $2501)
Existe alguns erros comuns que ocorrem em aplicações que utilizam BDE para fazer a comunicação com o Banco de Dados, principalmente em SOs mais novos como Windows Vista e 2003/2008 Server. Para ajudar algumas pessoas vou exemplificar algumas parametrização de memória do BDE e o que pode ser feito para tentar solucionar o problema.
Tive um desses problemas em um aplicação onde trabalha-se com acesso remoto aos servidores utilizando a tecnologia da GraphOn chamada Go-Global, muito boa e rápida diga-se de passagem. O erro só ocorria com dois usuários na hora de abrir o mesmo módulo do ERP. Depois de quebrar um pouco a cabeça chegamos a solução.
Erro:
Conflito de compartilhamento de memória (Shared memory conflict – $210D)
Problema:
O BDE está tentando usar um endereco de memoria que já está em uso pelo SO ou outra aplicação.
Solução:
1 – Fechar todas aplicações BDE;
2 – Executar o Administrador do BDE (Adm BDE) pelo “Painel de Controle” ou procurar o arquivo BDEADMIN.EXE (Adm BDE), este arquivo, normalmente, fica em algum diretório em “Arquivos de ProgramasBorland…”.
3 – Ao carregar Adm BDE clique na aba “Configuration”;
4 – Há um item na árvore, no lado esquerdo da tela do Adm BDE, chamado “Configuration”. Se não estiver expandido, expanda-o;
5 – Depois, expanda “System”. Abaixo do “System”, selecione “INIT”.
6 – Na janela ao lado direito, procure o parâmetro chamado “SHAREDMEMLOCATION”. Mude o valor para “5BDE”.
7 – Depois, clique na palavra “Object” na barra de menu da janela principal e selecione “Apply”.
8 – Responda “OK” para a confirmação de “Save all edits…” (Salvar todas alterações).
Erro:
Memória insuficiente para esta operação (Insufficient memory for this operation – $2501)
Problema:
Sua aplicação (ou outra aplicação BDE) consumiu a memória reservada para o BDE.
Solução:
1 – Fechar todas aplicações BDE;
2 – Executar o Administrador do BDE (Adm BDE) pelo “Painel de Controle” ou procurar o arquivo BDEADMIN.EXE (Adm BDE), este arquivo, normalmente, fica em algum diretório em “Arquivos de ProgramasBorland…”.
3 – Execute o Adm BDE e clique na aba “Configuration”.
4 – Há um item na árvore, no lado esquerdo da tela do Adm BDE, chamado “Configuration”. Se não estiver expandido, expanda-o;
5 – Depois, expanda “System”. Abaixo do “System”, selecione “INIT”.
6 – Na janela ao lado direito, procure o parametro chamado “SHAREDMEMSIZE”. Mude o valor para 4096.
7 – Depois, clique na palavra “Object” na barra de menu da janela principal e selecione “Apply”.
8 – Responda “OK” para a confirmação de “Save all edits…” (Salvar todas alterações).
Tente iniciar a aplicação novamente. Caso continue com problemas para rodar a aplicação e o servidor estiver rodando Windows NT, 2000 ou superior, tente algumas instruções a seguir, mas desta vez deixe a propriedade “SHAREDMEMSIZE” com valor 4096, e altere a propriedade “SHAREDMEMLOCATION” para “0×5BDE”.
Aplique as alterações antes e tente rodar novamente sua aplicação. Se o mesmo erro permanecer tente alterar a propriedade “SHAREDMEMSIZE” para 8192. Se persistir o erro, tente informar “0×6BDE” para a propriedade “SHAREDMEMLOCATION”.
Outros valores podem ajudar a resolver este problema, são eles: 1000, 7000, e 7F00. Se nenhum desses valores resolverem, você pode tentar 2000, 3000, 4000, etc. ou qualquer valor dentro dos intervalos especificados para cada sistema operacional:
Windows NT/2000/2003/Vista/2008: SHAREDMEMLOCATION = 1000 to 7F00
Windows 95/98: SHAREDMEMLOCATION = 9000 to FFFF
Em outros casos usuários do BDE foi necessário remover ou desabilitar alguns drivers (som, impressora) no Windows NT/2000/2003/Vista/2008 para resolver o problema, mas nomalmente somente “realocando” o pool de memória usado pelo BDE na propriedade SHAREDMEMLOCATION resolve.
Abraços!!