Problemas com Windows 2003

Delphi

24/08/2005

Ola Galera,

estou com um problema no Windows 2003, fiz um programa e quando tento executa-lo no Windows 2003 o programa não abre. O programa foi feito no Delphi 7 Windows 98. Alguem sabe como resolver este problema :?:

T+


Wcsilva

Wcsilva

Curtidas 0

Respostas

Andremuller

Andremuller

24/08/2005

Olá colega.

Pesquisando pela solução no fórum achei seu tópico. Estou passando pelo mesmo problema.

No Windows 2003 server a aplicação entra no Task Manager mas cai fora sem dar nenhuma mensagem de erro. A tela inicial nem pisca.
Em outros sistemas operacionais isso não acontece.

Olhando nos eventos do ´Computer Manager´ (dentro de administrative tools) só aparece que:

Faulting application MinhaAplicacao.exe, version 0.0.0.0, faulting module kernel32.22, version 5.2.3790.0, fault address 0x000249d3

Você conseguiu resolver isso ou alguém sabe.

desde já obrigado


GOSTEI 0
Andremuller

Andremuller

24/08/2005

Olá pessoal. Segue a resposta.

Isso acontece quando o erro da aplicação ocorre entre o Application.Initialize e o Application.Run

Isso faz com que o 2003 encerre a aplicação sem exibir a mensagem de erro.

Como eu fiz para ver a mensagem.

Eu coloquei toda inicialização da aplicação dentro de uma procedure no fonte do projeto. Então fica algo parecido com:

If ParamStr(2) <> ´-TryEx´ then
begin
  ExecutarAplicacao();
else
  try
    ExecutarAplicacao();
  except
    on E: Exception do
       SalvaStringToFile(E.Message);
  end;


agora eu vejo qual erro está dando problema no 2003 dentro do arquivo gerado.


GOSTEI 0
Daykas

Daykas

24/08/2005

A solução é a seguinte: clique em meu computador e depois em propriedades. vá na opção avançado e depois em configurações (desempenho). clique na aba prevenção e execução de dados e depois em adicionar. aponte para o executável do seu sistema.
só isso.


GOSTEI 0
Andremuller

Andremuller

24/08/2005

Na verdade o meu problema era um erro na inicialização de uma classe que lia uma data em formato brasileiro (dd/mm/yyyy) e o servidor está em inglês (mm/dd/yyyy) gerando um erro de data inválida.
Mas como é windows 2003 o erro não era exibido em nenhuma mensagem. Com o código postato em meu reply anterior eu consegui ler o erro e corrigir o problema.

O maior problema é que, se tu não sabe dessa peculiaridade do 2003, tu fica preso com um sistema que simplismente não carrega sem exibir mensagens.

Mas obrigado pela dica, se acontecer denovo, sem a aplicação gerar erros entre o Initialization e o Run, vou usar a sua dica.


GOSTEI 0
Helio Nascimento

Helio Nascimento

24/08/2005

wcsilva

Revivi este tópico porque estou com o mesmo problema. Um sistema que roda a + de 3 anos em windows xp, e agora em um novo cliente que possui o windosw server 2003 como servidor, não roda e não dá mensagem.
Qual foi a sua solução para este caso?
Fico no aguardo.

Obrigado/Hélio


GOSTEI 0
Andremuller

Andremuller

24/08/2005

Olá Hélio.

Se você olhar o wcsilva criou o tópico em 2005. Eu, como tinha o mesmo problema, aproveitei o tópico em 2008 e resolvi o problema.

Dê uma olhada no meu post

Isso acontece quando o erro da aplicação ocorre entre o Application.Initialize e o Application.Run Isso faz com que o 2003 encerre a aplicação sem exibir a mensagem de erro.


Perdi alguns dias para resolver o problema.
Se você não entender o código que eu criei posso te passar mais detalhes, mas basicamente eu pego a exceção entre o Application.Initialize e o Application.Run e salvo em um arquivo já que a aplicação não mostra a mensagem.


GOSTEI 0
Helio Nascimento

Helio Nascimento

24/08/2005

andremuller

Se vc puder me enviar o trecho destas procedures do seu sistema, ficará bem melhor pois a outra funçao(SalvaStringToFile) não é mencionada os detalhes. Ficaria imensamente grato, pois estou tentando resolver = a maluco.
Aproveito a oportunidade para pedir-lhe informações sobre componentes de terceiros tais como JVCL e RX Lib - Eu uso em alguns forms.

Obrigadão.\Hélio


GOSTEI 0
Andremuller

Andremuller

24/08/2005

Olá Hélio.

Criei uma aplicação nova com a ideia que falo. De você gerar a exceção entre o Initialize e o Run em arquivo.

A única coisa que você precisa fazer é abrir o fonte do seu DPR, colocar todo código entre um Try Except e salvar o resultado da exceção em arquivo.
Assim você vai conseguir ver no arquivo a Exceção que o Win2003 está gerando, mas não está mostrando para você. Então você resolve o problema e pode tirar o tratamento de exceção.

program Project1;

uses
  Forms,
  Classes,
  SysUtils,
  Unit1 in ´Unit1.pas´ ;

{$R *.res}
var
  oSl: TStringList;
begin
  try
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    raise Exception.Create(´Exemplo de uma mensagem de erro.´);
    Application.Run;
  except
    on E: Exception do
    begin
      oSl := TStringList.Create();
      try
        oSl.Text := E.Message;
        oSl.SaveToFile(´C:\LogErro.txt´);
      finally
        oSl.Free();
      end;
    end;
  end;
end.



GOSTEI 0
Helio Nascimento

Helio Nascimento

24/08/2005

andremuller

Andre. Não funfou. Coloquei o trecho como vc disse e não deu certo.
O Arquivo ´C:\LogErro.Txt´, não foi localizado no C:\ do Windows Server 2003. Estou acessando com permissão total.
Será que tenho que registrar as DLL´s ? - Tem alguma a ver - Eu instalei manualmente. Não utilizei instalador tipo Install Shield.
Continua sendo acessado e silenciosamente sai sem msg. - Se vc acompanhar pelo Task Mananger - vc visualiza a hora que o executável
entra fica alguns segundos e depois sai.


GOSTEI 0
Andremuller

Andremuller

24/08/2005

Eu diria para você testar com uma aplicação vazia, como a que eu fiz, somente para ver se ele está gerando o arquivo com o texto da exceção que é disparado no Raise.


GOSTEI 0
POSTAR