Existe alguma forma de capturar o caminho do .exe?

Delphi

09/03/2005

amigos,
coloquei um arquivo .ini que indica o caminho do bd para que no acesso
ele configure o database, mas gostaria de melhorar, independente da unidade ou diretorio que colocar a pasta q contem os arquivos .exe e .ini
quando eu executasse o programa ele verificasse o caminho onde se encontra
ex:

c:\projeto\teste
ou
d:\arquivos de programas\projeto\teste

apartir dai eu gravaria no arquivo.ini o caminho do bd


desde ja agradeço



delphi7.0 e firebird


Marcusbraga

Marcusbraga

Curtidas 0

Respostas

Massuda

Massuda

09/03/2005

Duas formas para obter o caminho para onde o programa está instalado:
var
  S: string;
...
  S := ExtractFilePath(Application.ExeName);
  // ou
  S := ExtractFilePath(ParamStr(0));



GOSTEI 0
Silviogs

Silviogs

09/03/2005

Olá

function GetExe(Ext : string) : string;
//
// Retorna o path completo do aplicativo que está associado
// ao arquivo cuja extensão você colocou em Ext
//
// Exemplo:
//
// Showmessage(GetExe(´txt´));
// Vai retornar: C:\Windows\Notepad.exe
//
var
reg: TRegistry; s : string;
I: integer;
begin
s := ´´;
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
if reg.OpenKey(´.´ + ext + ´\shell\open\command´,false) <> false then
begin
s := reg.ReadString(´´);
reg.CloseKey;
end
else
begin
if reg.OpenKey(´.´ + ext, false) <> false then
begin
s := reg.ReadString(´´);
reg.CloseKey;
if s <> ´´ then
begin
if reg.OpenKey(s + ´\shell\open\command´,false) <> false then
begin
s := reg.ReadString(´´);
end;
reg.CloseKey;
end;
end;
end;
if ((length(s) > 0) and (s[1] = ´´´)) then
Delete(s, 1, 1);
i := pos(´.EXE´,uppercase(S));
if I = 0 then
begin
Result := ´´
end
else
begin
Result := copy(S, 1, i +3);
end;
end;

Atenciosamente

Silvio Guedes


GOSTEI 0
Marcusbraga

Marcusbraga

09/03/2005

valeu massuda mais uma vez...

Só mais uma pergunta isso seria viável? ou pode dar algum pane mais tarde por toda vez que eu abrir o programa ele gravar novamente o arquivo

ou seria mais viavel eu manter fixo o caminho no ini e mudar manualmente somente quando for preciso?

obrigado...


GOSTEI 0
Massuda

Massuda

09/03/2005

... isso seria viável? ou pode dar algum pane mais tarde por toda vez que eu abrir o programa ele gravar novamente o arquivo ou seria mais viavel eu manter fixo o caminho no ini e mudar manualmente somente quando for preciso?
Já fiz programas que funcionam gravando os dados de configuração em um arquivo .INI no mesmo diretório do programa (ou um subdiretório dele).

Algo que lembrei agora... existe um problema relacionado com o fato do usuário ser ou não administrador da máquina e o diretório onde o programa está instalado. Talvez não seja seu caso, mas lá vai...

Numa máquina com múltiplos usuários com diferentes permissões, a não ser que o usuário seja administrador da máquina, ele não tem permissão para escrever em qualquer um dos subdiretórios de c:\Arquivos de Programas, que é onde normalmente se instala um programa.

Um jeito fácil de contornar esse problema é instalar seu programa em um subdiretório novo (por exemplo, c:\MeuPrograma); assim, apesar de somente um administrador da máquina poder instalar seu programa, o usuário normal poderá utilizá-lo sem problemas.

Agora, pode ser que você precise mesmo instalar seu programa em c:\Arquivos de Programas. Avise se for seu caso.


GOSTEI 0
POSTAR