27/03/2006

Sistema Se Fecha Sozinho

Coisa muito louca. Meu sistema está se fechando sozinho.
Não dá nenhuma mensagem de erro, nada. Simplesmente, sem nenhuma solicitação do usuário, o programa se encerra.
Não é em todo computador que isso acontece. Já estou há uma semana pesquisando o que poderia ser, mas não encontrei nenhuma luz.
O foi possível notar até o momento é que, quando se abre alguma página na internet é que o problema ocorre mais.
Alguém tem qualquer idéia do que pode estar causando isso? Não sei o momento que ocorre e em meu computador não acontece. Por isso nem debugar consigo.
Uso Delphi 7, Firebird 1.5.3.0487 e DBExpress.

Obrigado


Armindo

Respostas

27/03/2006

Paulocesar1301

Tive alguns problemas desse tipo no passado ao acessar várias funções em uma dll num curto espaço de tempo.
Por um acaso seu sistema utiliza alguma dll tb utilizada pelo explorer ou pelo rwuindows ? Tentou rodar linha a linha ? às vezes qdo o problema é cabeludo... o melhor é ir por eliminação :wink:

Abs e Bons Códigos :wink:


Responder Citar

27/03/2006

Armindo

...Tentou rodar linha a linha ? às vezes qdo o problema é cabeludo... o melhor é ir por eliminação

Obrigado pela resposta, mas, como mencionei, o problema é que não consigo reproduzir o problema em minha máquina. A situação só ocorre em máquinas de usuários e as quais não tenho acesso. Por isso a diculdade de debugar.


Responder Citar

27/03/2006

Bico

Boa tarde colega.

Tive problemas semelhates a este.
Quando o usuário tentava acessar algumas telas do sistema no Windows 98 o sistema simplesmente fechava e não exibia nenhuma mensagem.
Depois de muito pesquisar descobri que o que estava causando este erro era uma ComboBox que tinha um item em branco.
No Windows XP o problema não acontecia, o erro só ocorria no Windows 98.
Identifique em que situação o sistema fecha sozinho. Caso sempre ocorra o erro ao tentar acessar determinadas telas, vale a pena dar uma conferida nestas telas.

Atenciosamente,
Fernando.


Responder Citar

28/03/2006

Armindo

O programa está se fechando sozinho.
Testei o em várias máquinas e cheguei a conclusão que isso está ocorrendo por que o programa consome excessivamente a memória do computador.
Há alguma maneira de eu verificar o que (componentes, rotinas, etc) em meu programa está(ão) causando isso?
Por exemplo, seu eu executar chamar a calculadora do Windos ´ShellExecute(Handle,´Open´,´Calc.exe´,nil,´´,sw_shownormal)´ o sistema fecha.
Outra situação: o programa está aberto, rodando normal. Quando o se abre uma página na internet, ele fecha sozinho, sem nenhuma msg de erro, nada.
Isso só ocorre em máquinas com pouca capacidade. O problema não é a rotina que chama a calculadora. É outra coisa que está sobrecarregando o sistema. O chamamento da calculadora do Windows é só a ponta do problema.
Alguém pode me ajudar?


Responder Citar

28/03/2006

Carlos_simioni

eu tenho alguns problemas semelhantes.
ainda não consegui identificar, mas eu já reparei que isso ocorre nos meus micros que acessam o site do bradesco.
o bradesco registra uma DLL junto ao IE. e quando acessa o site deles essa dll carrega e chega a fechar meus programas. ainda não encontrei solução. a unica ate agora foi que quando meu executavel tem a data de criação mais nova que a do bradesco o meu sistema roda sem fechar.


Responder Citar

28/03/2006

Armindo

Gente,

Meu programa fecha quando se entra numa página da internet. Fecha sem nenhum mensange, nada. No OnClose do main form há rotinas que sequer são executadas. É como seu o programa fosse fechado no CTRL+ALT+DEL.
Será que ninguém tem uma mínima idéia do que pode estar causando isso?


Responder Citar

28/03/2006

Paulocesar1301

Você declarou alguma DLL estaticamente em seu sistema que por ventura seja usada tb pelo rwuindows ou peloIE ?
Se sim tente chamá-la dinamicamente... no meu caso quado tive problemas parecidos resolveu


Responder Citar

29/03/2006

Armindo

Você declarou alguma DLL estaticamente em seu sistema que por ventura seja usada tb pelo rwuindows ou peloIE ? Se sim tente chamá-la dinamicamente... no meu caso quado tive problemas parecidos resolveu


Desculpe a ignorância, mas ´boiei´. O que quer dizer declarar uma dll estatica e dinamicamente?

Obrigado.


Responder Citar

29/03/2006

Paulocesar1301

Estática: declara a dll na mão antes do implementation:

function LoginRede: WideString; stdcall; external ´MonDLL.dll´;


Dinâmica: lê a dll usando LoadLibrary e FreeLibrary:

type TCallMeDll = function ou procedure<declaração exata após o nome> stdcall;
var CallMeDll: TCallMeDll;
    FuncPtr: TFarProc;
    hDll: THandle;
    result: <tipo de retorno>;
begin
  hDll := LoadLibrary(´<nome da dll>´);
  FuncPtr := GetProcAddress(hDLL, ´<nome da função (a função deve ser declarada na seção Exports da DLL com a opção Name ´Nome da Função´)>´);
  @CallMeDll := FuncPtr;
  if @CallMeDll <> nil then result := CallMeDll(<argumentos necessários para a função>);
  FuncPtr := nil;
  FreeLibrary(hDll);
end;



Responder Citar

29/03/2006

Armindo

Obrigado pelo esclarecimento, mas não é o meu caso, pois não declaro nenhum .dll no meu sistema. Nem estática nem dinamicamente.

Apesar do meu problema continuar, o tópico já serviu para algo, pois aprendi algo.

Descobri mais uma coisa sobre o meu problema. Não é a memória RAM que é esgotada. O problema parece estar relacionado com o processador, pois acontece com máquina com 256 e 512 KB de RAM.


Responder Citar

04/10/2007

Rodc

Vou ter de ressuscitar este tópico.
Estou tendo este problema com um cliente. Através de testes consegui descobrir que o problema está ao usar a função ShellExecute, ou para abrir uma pagina da internet ou para chamar a calculadora ou para abrir outro programa meu.
O problema persiste por uma semana e eu já não sei mais o que fazer.
Armindo, você conseguiu resolver o problema do seu cliente?
Alguém mais teve este problema?


Responder Citar

06/11/2007

Emafra

Também estou com este problema em um cliente e não consigo simular de jeito nenhum. Já conseguiu resolver de alguma forma?


Responder Citar

06/11/2007

Rodc

Não consegui resolver usando ShellExecute().
Passei a usar WinExec() onde foi possível. Com WinExec o erro não acontece.


Responder Citar