Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Associar arquivo a um programa


silvanirms

Pergunta

Pessoal, na hora de se elaborar um programa teria como atrelar o funcionamento desse programa a um determinado arquivo (por exemplo um .dll) para que ele so funcionasse na maquina que possuisse esse arquivo no seu sistema? e caso ele não encontre esse arquivo tem como mascarar a descricao do erro? (evitar que seja mostrado um erro de que falta ESSE arquivo, evitando assim que seja conhecido qual arquivo ele necessita para rodar). Abs

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

Bem.. consegui esse codigo para a situacao acima, alguém poderia me indicar em que parte do projeto esse codigo entra? já tentei em varias e sempre da erro..

if not FileExists(c:\windows\teste.dll) then
ShowMessage('Arquivo "'+NomeFalso+'" não existe')
Application.Terminate;
Exit;
Não é necessário voce informar um arquivo falso, basta não informar nada... se o arquivo não for encontrado, simplesmente ele é abortado. coloque o código no OnActive do primeiro form chamado pela sua aplicação
procedure TForm1.FormActivate(Sender: TObject);
begin

   if not FileExists('C:\windows\Teste.dll') then
     application.Terminate;

OBS: O erro no seu código é porque voce não colocou aspas no caminho para o arquivo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olhe o seu erro:

Voce colocou uma procedure dentro da outra ( seria até possivel mas não dessa maneira )

procedure TForm1.FormCreate(Sender: TObject);
begin
   procedure TForm1.FormActivate(Sender: TObject);
   begin
      if not FileExists('C:\windows\Teste.dll') then
         application.Terminate;
   end;
end;
Apague o código acima e use desta maneira
procedure TForm1.FormActivate(Sender: TObject);
begin
   if not FileExists('C:\windows\Teste.dll') then
      application.Terminate;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

O programa ate compilou, mas não deu o resultado esperado (fechar na ausencia do arquivo teste.dll) vou te postar o codigo, ok? ahh e obrigado pela paciencia.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, ComCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Image1: TImage;
    Shape1: TShape;
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
   if not FileExists('C:\windows\Teste.dll') then
      application.Terminate;
end;

end.

Editado por silvanirms
Link para o comentário
Compartilhar em outros sites

  • 0

Voce pode fazer o seguinte teste... crie uma nova aplicação e coloque somente este código

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);
begin
   if not FileExists('C:\windows\Teste.dll') then
      application.Terminate;
end;

end.

Ao executar o programa, ele nem vai chegar a abrir se não encontrar o arquivo Teste.dll no diretório do windows

OBS: O seu código está correto, e se não estiver fechando é porque está encontrando o arquivo Teste.dll no diretório do windows... se for assim, voce deve deleta-lo para fazer o teste.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

So o codigo funcionou, mas já procurei aqui e não existe nenhum teste.dll e mesmo assim ele não ta fechando, deve ter algum erro nesse meu codigo, algum detalhe que esteja impedindo o programa de fechar..

então sugiro a voce criar uma nova aplicação e criar as procedures uma a uma e ir executando o programa ( começando pelo OnActive do Form )

colocando uma a uma voce poderá achar o erro.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Refiz o programa, procedure por procedure e não consegui que o codigo fizesse o programa fechar.. alguém poderia dar uma olhada nesse codigo que postei acima se esta tudo correto? (acho que deve ser algum detalhe que esteja passando despercebido e esta evitando que o codigo de fechar o programa funcione). Obrigado, abs s

Editado por silvanirms
Link para o comentário
Compartilhar em outros sites

  • 0

silvanirms, se o seu programa não vai rodar caso não encontre o tal arquivo, acredito que o lugar mais apropriado para fazer isto, seja no corpo do projeto (Project->View Source - acho que é isto...).

Então, você altera ele de modo que tudo o que estiver lá, seja executado apenas se a condição for verdadeira, ou seja, o arquivo existir:

...
{$R *.res}
begin
  if FileExists('C:\windows\Teste.dll') then
  begin
   // aqui o código normalmente executado no projeto
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    // ... outros forms que estejam no auto-create aparecerão aqui
    Application.Run;  
  end else
    MessageDlg('Um arquivo necessário ao programa não foi encontrado.', mtError, [mbOk], 0);
end.

Obs: acrescente a unit Dialogs, na cláusula uses, para uso da função MessageDlg.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...