Array
(
)

Sistema Se Fecha Sozinho

Armindo
   - 27 mar 2006

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


Paulocesar1301
   - 27 mar 2006

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:


Armindo
   - 27 mar 2006

...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.


Bico
   - 27 mar 2006

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.


Armindo
   - 28 mar 2006

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?


Carlos_simioni
   - 28 mar 2006

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.


Armindo
   - 28 mar 2006

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?


Paulocesar1301
   - 28 mar 2006

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


Armindo
   - 29 mar 2006


Citação:
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.


Paulocesar1301
   - 29 mar 2006

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

#Código


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


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

#Código

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;



Armindo
   - 29 mar 2006

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.


Rodc
   - 04 out 2007

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?


Emafra
   - 06 nov 2007

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


Rodc
   - 06 nov 2007

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