Fórum Existe alguma forma de capturar o caminho do .exe? #271612
09/03/2005
0
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
Curtir tópico
+ 0Posts
09/03/2005
Massuda
var S: string; ... S := ExtractFilePath(Application.ExeName); // ou S := ExtractFilePath(ParamStr(0));
Gostei + 0
09/03/2005
Silviogs
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
09/03/2005
Marcusbraga
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
09/03/2005
Massuda
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
Clique aqui para fazer login e interagir na Comunidade :)