O que há de errado neste código?
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?
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
Curtidas 0
Respostas
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