Solução para os erros do BDE relacionados a memória ($210D, $2500, $2501)
BDE, Delphi, Win32 August 17th, 2009Em experiência reportadas por outros usuários foi necessário remover ou desabilitar o driver da placa de som 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 já é
o suficiente.
Fala ai pessoALL!
Abaixo uso dois erros comuns em aplicações BDE, principalmente em SOs mais novos como Windows Vista e 2008 Server, para exemplificar a parametrização de memória do BDE.
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 Programas\Borland…”.
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 Programas\Borland…”.
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).
Agora você pode tentar iniciar a aplicação novamente. Se ainda tiver problemas para rodar a aplicação e você estiver rodando ela em Windows NT, 2000 ou superior, abaixo tem algumas instruções sobre, mas desta vez deixe a propriedade “SHAREDMEMSIZE” com 4096, e altere a propriedade “SHAREDMEMLOCATION” para “0x5BDE”.
Então 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 o erro persistir, você pode tentar informar “0x6BDE” para a propriedade “SHAREDMEMLOCATION”. Se ainda assim o erro persistir, você pode tentar outro valor para a propriedade “SHAREDMEMLOCATION”, conforme o intervalo exposto abaixo.
Outros valores podem ajudar a resolver este problema, são eles: 1000, 7000, and 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 95/98: SHAREDMEMLOCATION = 9000 to FFFF
Windows NT/2000/2003/Vista/2008: SHAREDMEMLOCATION = 1000 to 7F00
Em experiência reportadas por outros usuários do BDE foi necessário remover ou desabilitar alguns drivers (som, p.e.) 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 já é o suficiente.
That’s all folks!
Abraços,
Beto Lima
April 14th, 2010 at 12:38
Beto, tentei todas essas opções, mais o erro ainda permanece. Alguma outra solução?
Grato.
June 22nd, 2010 at 13:35
Excelente!
Parabens!
August 10th, 2010 at 07:30
Resolvido!
September 21st, 2010 at 11:07
Muito bom. Me ajudou muito.
abs
December 9th, 2010 at 16:38
Vlw, foi de grande utilidade para resolver meu problema^^
March 12th, 2011 at 11:38
Caramba, o cara é fera!
Resolveu.
Muito Obrigado.
February 9th, 2012 at 16:01
Funcionou, perfeitamente. Muito Obrigado!
April 17th, 2012 at 09:48
Resolveu meu problema com “Shared memory conflict – $210D”. Obrigado.
May 14th, 2012 at 12:29
Parabens vc e foda mesmo resolveu
June 27th, 2012 at 14:39
Fiz o procedimento e funcionou perfeitamente no windows 2008 server.
Porém, no dia seguinte ao procedimento, percebi que houve piora da performance dos sistemas no servidor, com degradação constante, até que em 3 dias fui obrigado a reiniciá-lo, mas o problema da lentidão voltou a ocorrer da mesma forma.
Alguma dica para solucionar esse problema?
August 3rd, 2012 at 14:16
Interessante, estava procurando sobre o assunto e me deparei com esse texto também, compartilho pq poder servir para mais alguém:
http://www.devmedia.com.br/erros-comuns-da-bde-e-suas-respectivas-solucoes/25325
January 23rd, 2013 at 12:35
Venho aqui consultar essas configurações de vez em quando e gostaria de agradecer o autor por compartilhar esse conhecimento conosco. Já me salvou várias vezes. Essas dicas ajudam bastante a diminuir os erros no Windows 7 (x32 e x64). Obrigado Beto!
May 4th, 2013 at 11:37
No meu caso, Windows 7 usando 64 bits não funcionou.
Então para resolver criei uma rotina que fica variando o endereço de memória na faixa de 1000 a 7F00.
No caso usei o endereço da seguinte forma:
Nocreate do form:
Var SBDEEnd:string;
Begin
SBDEEnd := timetostr(SysUtils.Time);
SBDEEnd := Copy(sBDEEnd,7,2);
ModifyBDE(\’\\System\\Init\’,\’SHAREDMEMLOCATION\’,iniemp.ReadString(\’BDE\’,\’SHAREDMEMLOCATION\’,\’7E\’)+SBDEEnd);
e criei:
Procedure TInicial.ModifyBDE(Path,Chave,Valor:String);
var ParamList: TParamList;
Lista:TStringList;
cfgMode:TConfigMode;
i:Integer;
begin
Lista:=TStringList.Create;
//Recupera Lista de Configurações
Session.GetConfigParams(Path,\’\’,Lista);
//Verifica na lista, onde a chave modificada se encontra
For i:=0 to Lista.Count-1 do
If Pos(UpperCase(Chave),UpperCase(Lista[i]))<>0 Then
Lista[i]:=UpperCase(Chave)+\’=\’+Valor;
//Salva o atual modo de configuração da variável de sessão
cfgMode:=Session.ConfigMode;
//Coloca em modo de alteração
Session.ConfigMode:=cmPersistent;
//Cria lista de parâmetros
ParamList := TParamList.Create(Lista);
//Chama API do BDE para modificar as configurações
Check(DbiCfgModifyRecord(nil, PChar(Path), ParamList.FieldCount, PFLDDesc(ParamList.FieldDescs), ParamList.Buffer));
//Recupera o modo de configuração da variável de sessão
Session.ConfigMode:=cfgMode;
//Salva as configurações da sessão
Session.SaveConfigFile;
ParamList.Free;
Lista.Free;
End;
July 11th, 2013 at 12:48
Alteração realizada com sucesso. Agora observaremos o comportamento da estação e das respectivas aplicações envolvidas no problema reclamado (BDE error $210D).
Grato!
July 11th, 2013 at 12:57
Alteração realizada com sucesso. Agora a estação e as aplicações envolvidas no problema reclamado estão em observação. Em breve daremos um feedback.
Grato.
December 19th, 2013 at 17:52
Beto Lima,
Muito bom, me ajudou muito, Eu já vinha tentando de um tudo.
um grande abraço.
April 16th, 2015 at 15:00
Executei o procedimento, estou utilizando windows 7 64bits, porém quando mando salvar em Object …. trava o bdeadmin !!! Não tem como eu editar manualmente o INI do BDE?
November 13th, 2015 at 09:35
Obrigado, problema resolvido