O que há de errado neste código?

Delphi

19/09/2006

Ao ser executado algumas vezes... o sistema usa 100¬ do processador deixando assim tudo travado.

Algo compilar pelo delphi algumas vezes (nem sempre) ele faz isso.

E o problema está nessa parte. O que pode ser?

program atualcesta;

uses
  Forms,
  Registry,
  SysUtils,
  Windows,
  uFrmLogin in ´uFrmLogin.pas´ ,
  uIdeSN in ´uIdeSN.pas´,
  uFrmRegistro in ´uFrmRegistro.pas´ ,
  uModulo in ´uModulo.pas´ {dm: TDataModule},
  uFuncoes in ´uFuncoes.pas´,
  uFrmPrincipal in ´uFrmPrincipal.pas´ ,
  uFrmCadProdutos in ´uFrmCadProdutos.pas´ ,
  uFrmManProdutos in ´uFrmManProdutos.pas´ ,
  uFrmEntradaProdutos in ´uFrmEntradaProdutos.pas´ ,
  uFrmConEstoque in ´uFrmConEstoque.pas´ ,
  uFrmCadCesta in ´uFrmCadCesta.pas´ ,
  uFrmVenda in ´uFrmVenda.pas´ ,
  uFrmCadClientes in ´uFrmCadClientes.pas´ ,
  uFrmCadFornecedores in ´uFrmCadFornecedores.pas´ ,
  uFrmContasReceber in ´uFrmContasReceber.pas´ ,
  uFrmUsuarios in ´uFrmUsuarios.pas´ ,
  uFrmTrocarSenha in ´uFrmTrocarSenha.pas´ ,
  uFrmCadFuncionarios in ´uFrmCadFuncionarios.pas´ ,
  uFrmAtualizaEstoque in ´uFrmAtualizaEstoque.pas´ ,
  uFrmCadUnidades in ´uFrmCadUnidades.pas´ ,
  uFrmBaixaContasReceber in ´uFrmBaixaContasReceber.pas´ ,
  uFrmFluxoCaixa in ´uFrmFluxoCaixa.pas´ ,
  uFrmManClientes in ´uFrmManClientes.pas´ ,
  uFrmContasPagar in ´uFrmContasPagar.pas´ ,
  uFrmBaixaContasPagar in ´uFrmBaixaContasPagar.pas´ ,
  uFrmVales in ´uFrmVales.pas´ ,
  uFrmBuscaContasReceber in ´uFrmBuscaContasReceber.pas´ ,
  uFrmRetiradaEstoque in ´uFrmRetiradaEstoque.pas´ ;

{$R *.res}

function GetIdeSN: string;
var
  iController, iDrive, maxController: Integer;
begin
  Result := ´´;
  maxController := 15;
  if Win32Platform <> VER_PLATFORM_WIN32_NT then
    maxController := 0;
  for iController := 0 to maxController do
  begin
    for iDrive := 0 to 4 do
    begin
      try
        Result := GetIdeDiskSerialNumber(iController, iDrive);
        if Result <> ´´ then
          Exit;
      except
        // ignore exceptions
      end;
    end;
  end;
end;

function Cripto(const S: string; Key: Word): string;
var
  i: byte;
  C1, C2: Integer;
begin
  C1 := 52845;
  C2 := 22719;
  Result := ´´;
  for i := 1 to length(S) do
  begin
    Result := Result + IntToHex(byte(char(byte(S[i]) xor (Key shr 8))), 2);
    Key := (byte(char(byte(S[i]) xor (Key shr 8))) + Key) * C1 + C2;
  end;
end;

const
  Raiz: string = ´Software\cacsis´;
var
  Registro: TRegistry;
begin
  Registro := TRegistry.Create;
  if not Registro.OpenKey(Raiz, False) then
  begin
    Application.Initialize;
    Application.Title := ´Controle Comercial´;
    Application.CreateForm(Tdm, dm);
  Application.CreateForm(TFrmRegistro, FrmRegistro);
  Application.Run;
  end
  else
  begin
    if not Registro.ValueExists(´lock´) then
    begin
      Application.Initialize;
      Application.CreateForm(Tdm, dm);
      Application.CreateForm(TFrmRegistro, FrmRegistro);
      Application.Run;
    end
    else
    begin
      if not (Registro.ReadString(´lock´) = Cripto(Cripto(´chavederegistrodosistema´, 3690), 3690)) then
      begin
        Application.Initialize;
        Application.CreateForm(Tdm, dm);
        Application.CreateForm(TFrmRegistro, FrmRegistro);
        Application.Run;
      end
      else
      begin
        Application.Initialize;
        Application.CreateForm(Tdm, dm);
        Application.CreateForm(TFrmLogin, FrmLogin);
        Application.Run;
      end;
    end;
  end;
  FreeAndNil(Registro);

end.



Marcelo_mileris

Marcelo_mileris

Curtidas 0

Respostas

Raserafim

Raserafim

19/09/2006

se a função Cripto é executada todas as vezes que vc executa o código, pode ser que o problema seja o fato de vc estar criando os forms mas não está destuindo. ou então verificar se já está carregado para não garrega-lo novamente.


GOSTEI 0
POSTAR