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

Essa Nao Entendi... <vox> (RESOLVIDO)


sem ideia p/ nick

Pergunta

fala galera eu irei por <vox> ao lado dos topicos que criar sobre o meu programa beleza?

---------------------------------------------

dessa vez esta acontecendo uma coisa que eu não estou entendendo.

antes de começar a explicar olhem esse codigo

program VoxMessenger;

uses
  Forms,   Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs, StdCtrls, Menus, ExtCtrls,
  Unit1 in 'Unit1.pas' {frmlogin},
  Unit2 in 'Unit2.pas' {frmcadastro},
  Unit3 in 'Unit3.pas' {frminicio},
  Unit4 in 'Unit4.pas' {frmsobre},
  Unit5 in 'Unit5.pas' {frmchat},
  Unit6 in 'Unit6.pas' {dm: TDataModule},
  Unit72 in 'Unit72.pas' {frmadm},
  Unit9 in 'Unit9.pas' {frmconfig};

{$R *.res}
begin
  Application.Initialize;
  Application.Title := 'Vox Messenger';
  Application.CreateForm(Tfrmlogin, frmlogin);
  Application.CreateForm(Tfrmcadastro, frmcadastro);
  Application.CreateForm(Tfrminicio, frminicio);
  Application.CreateForm(Tfrmsobre, frmsobre);
  Application.CreateForm(Tfrmchat, frmchat);

  try
  Application.CreateForm(Tdm, dm);
  if FileExists('D:\VoxMessenger\db\db.dll') = false then
  begin
  dm.Table1.Active := false;
  dm.Table1.DatabaseName := inputbox('VoxMessenger','digite o caminho do Banco de dados, se clicar em cancelar o valor ao lado sera colocado como padrão.','c:\VoxMessenger\db\');
  dm.Table1.Active := true;
  end
  else
  showmessage('db encontrado');
  except
  end;

  Application.CreateForm(Tfrmadm, frmadm);
  Application.CreateForm(Tfrmconfig, frmconfig);
  Application.Run;
end.

agora o problema e o seguinte eu fiz meu projeto na unidade D:\ da minha maquina então a galera que não tem o DB na unidade D:\ não usa o programa. eu tentei resolver isso fazendo o seguinte olhem
...
try
  Application.CreateForm(Tdm, dm);
  if FileExists('D:\VoxMessenger\db\db.dll') = false then
  begin
  dm.Table1.Active := false;
  dm.Table1.DatabaseName := inputbox('VoxMessenger','digite o caminho do Banco de dados, se clicar em cancelar o valor ao lado sera colocado como padrão.','c:\VoxMessenger\db\');
  dm.Table1.Active := true;
  end
  else
  showmessage('db encontrado');
  except
  end;
...
eu tento buscar o DB se não achar ele aparece um INPUTBOX perguntando ao usuario o que ele fez do DB. agora ele nunca mostra o
 SHOWMESSAGE('DB ENCONTRADO') 

por mais que o DB esteja no lugar certo aqui na MINHA maquina.

alguém sabe corrigir ou me explicar o que pode estar acontecendo!?

desde já agradeço, e aguardo resposta.

como disse acima eu vou por <VOX> ao lado dos topicos que criar sobre meu programa.

meu MSN : pedro_Rj_@hotmail.com

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Olá SIN... Bem interessante essa sua iniciativa de compartilhar alguns aspectos da criação do seu programa VoxMessenger.

Bem... Eu testei aqui e funcionou cara... Antes de abrir o aplicativo, aparece a mensagem DB ENCONTRADO. Só para testar, eu utilizei o seguinte código:

(...)
try
 Application.CreateForm(TForm1, form1);
 if FileExists('C:\teste.txt') = false then
 begin
 showmessage('db NÃO encontrado');
 end
 else
 showmessage('db encontrado');
 except
 end;
(...)
Só uma coisinha que eu mudei: eu tirei o meu form FORM1 do AUTO-CREATE e o coloquei dentro de AVAILABLE FORMS... Para fazer isso, no menu, acesse PROJECT -> OPTIONS -> Guia FORMS. Seu FORM1 deve estar no ListBox esquerdo (AUTO-CREATE forms). Selecione seu form FORM1 e clique na seta para direita, de modo que ele passe para o ListBox do lado direito (AVAILABLE forms). Na verdade, esta alteração que eu fiz nem precisaria ser feita, pois mesmo sem ela funcionou normalmente (ou seja, a mensagem apareceu para mim). Ao fazer isso, você deverá observar a mensagem contida no ShowMessage, antes de os forms forem criados. Outra observação: você não precisa especificar o caminho completo. Você pode: 1) simplesmente colocar o nome do arquivo (no caso DB.dll); 2) utilize o código:
ExtractFilePath (Application.ExeName);

3) crie um arquivo .INI para que armazene o local onde o programa foi efetivamente instalado. No caso, o arquivo .INI armazenará as informações necessárias para você localizar o seu banco de dados.

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

No caso de você utilizar a segunda opção que mencionei acima, para você ficaria assim:

if FileExists (ExtractFilePath (Application.ExeName)+'\db\db.dll') = false then

Deste modo, independentemente do diretório onde o usuário irá instalar seu aplicativo, ele conseguirá localizar seu arquivo db.dll.

Link para o comentário
Compartilhar em outros sites

  • 0

fala cara beleza?

olha valeu mesmo pelas dicas mais eu testei la e não funcionou.

olhe

 
if FileExists(ExtractFilePath ('VoxMessenger.exe')+'\db\db.dll')= false then

e impossivel que de errado. eu já instalei e tal mais ele nunca acha o banco de dados. eu li acima que tem como criar um INI ?!

como eu faço isso ?

eu estava com uma ideia de gravar no registro do windows assim sempre que iniciar ele vai buscar la verificar se existir ele continua. o que voce acha?

valeu fui.

Link para o comentário
Compartilhar em outros sites

  • 0

se liga brother...

try
  Application.CreateForm(Tdm, dm);
        if FileExists(ExtractFilePath('VoxMessenger.exe')+'\db\db.dll')= false then
        begin
        dm.Table1.Active := false;
        diretorio := inputbox('VoxMessenger','o VoxMessenger, não encontrou o banco de dados necessario para sua execuçao por favor digite o caminho do banco de dados ou reinstale o vox.','c:\VoxMessenger\db\');
        dm.Table1.DatabaseName := diretorio;
        dm.Table1.Active := true;
        end
        else
        begin
        dm.Table1.Active := false;
        dm.Table1.DatabaseName := ExtractFilePath('VoxMessenger.exe');
        dm.table1.Active := true;
        end;
  except
  end;
olha eu quero apenas que meu banco de dados funcione independente de onde o usuario instalar. eu tentei a parada do registro mais o comando
registro.RootKey := hkey_local_machine; 

não funciona no PROJETC.

qual seria a logica do ini, como ele funciona?

como eu faria o ini???

Link para o comentário
Compartilhar em outros sites

  • 0

Fala aí SIN,

Não entendi mano...

Por que você não usa aquilo que eu postei? (if FileExists(ExtractFilePath('VoxMessenger.exe')+'\db\db.dll')= false then). Com este código você já conseguirá localizar o seu arquivo de banco de dados independentemente onde seu aplicativo for instalado (você nem precisa fazer menção a VoxMessenger.exe).

Fala aí o porquê que você não quer utilizar este recurso. Conforme for, partimos pro INI mesmo (mas continuo não entendendo o que há de errado).

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

fala brother...

eu usei if FileExists(ExtractFilePath('VoxMessenger.exe').

olhe no meu post la em cima. so que não estava dando certo então eu queria saber o que ele retornava, então fiz o seguinte : SHOMESSAGE(if FileExists(ExtractFilePath('VoxMessenger.exe')) ele me retorna um valor VAZIO !!!!

sabe porque ?

Link para o comentário
Compartilhar em outros sites

  • 0

Foi mal cara... Nem tinha visto o erro. Não é para trocar Application.ExeName pelo nome do seu aplicativo e sua extensão. Apenas deixe Application.ExeName (e não VoxMessenger.exe).

Desta forma, ficaria assim:

if FileExists (ExtractFilePath (Application.ExeName)+'\db\db.dll') = false then

Tente e me fala se funciona. Abs.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...