Pegar pasta atual da DLL
Olá pessoal..
Seguinte.. estou tendo um problema meio estranho... tenho um programa feito por mim, que está em uma determinada pasta (C:\prg por exemplo) e algumas DLL´s compartilhadas que estão em outra pasta(c:\LIB por exemplo).
Dentro de uma DLL, em um determinado procedimento eu preciso pegar a pasta atual, mas a pasta onde está a DLL e não o executável que a está chamando, pois nesta pasta da DLL eu tenho um arquivo de configuração que ela precisa ler.
Quando eu chamo a função ExtractFilepath(application.ExeName) recebo a pasta onde está o executável (c:\prg) e não onde está a DLL (c:\lib). Como eu faço para pegar a pasta onde se encontra a DLL?
Muito Obrigado.
Alemão
Seguinte.. estou tendo um problema meio estranho... tenho um programa feito por mim, que está em uma determinada pasta (C:\prg por exemplo) e algumas DLL´s compartilhadas que estão em outra pasta(c:\LIB por exemplo).
Dentro de uma DLL, em um determinado procedimento eu preciso pegar a pasta atual, mas a pasta onde está a DLL e não o executável que a está chamando, pois nesta pasta da DLL eu tenho um arquivo de configuração que ela precisa ler.
Quando eu chamo a função ExtractFilepath(application.ExeName) recebo a pasta onde está o executável (c:\prg) e não onde está a DLL (c:\lib). Como eu faço para pegar a pasta onde se encontra a DLL?
Muito Obrigado.
Alemão
Prgdelphi
Curtidas 0
Respostas
Paullsoftware
02/05/2007
Quando eu chamo a função ExtractFilepath(application.ExeName) recebo a pasta onde está o executável (c:\prg) e não onde está a DLL (c:\lib). Como eu faço para pegar a pasta onde se encontra a DLL?
mais aqui você está fazendo referencia ao executavel da aplicação...Pergunta! atavés do seu sistema vc consegue encontrar as dll´s??
uma solução simples seria vc guardar os paths em um arquivo ini/xml e fazer as chamadas através desse arquivo...
Seguinte.. estou tendo um problema meio estranho... tenho um programa feito por mim, que está em uma determinada pasta (C:\prg por exemplo) e algumas DLL´s compartilhadas que estão em outra pasta(c:\LIB por exemplo).
sinceramente não vejo necessidade de ter arquivos da mesma aplicação em diretórios diferentes, o ideal é que fosem sub-diretórios ficaria até mais simples pra você mesmo...GOSTEI 0
Prgdelphi
02/05/2007
É.. eu concordo com você, também não vejo a necessidade de deixar a DLL em outra pasta, mas acontece que ela é compartilhada entre varios aplicativos do cliente, então, ela teria que ficar em uma unica pasta, de onde seria chamada por todos os programas.
Também tinha pensado no parametro informando a pasta, mas achei que o Delphi possuia alguma função para determinar a pasta. Vou ter que optar por esta solução mesmo.
Muito obrigado!
Também tinha pensado no parametro informando a pasta, mas achei que o Delphi possuia alguma função para determinar a pasta. Vou ter que optar por esta solução mesmo.
Muito obrigado!
GOSTEI 0
Adriano Neto
02/05/2007
function GetModuleName: string;
var
szFileName: array[0..MAX_PATH] of Char;
begin
FillChar(szFileName, SizeOf(szFileName), #0);
GetModuleFileName(hInstance, szFileName, MAX_PATH);
Result := szFileName;
end;
var
szFileName: array[0..MAX_PATH] of Char;
begin
FillChar(szFileName, SizeOf(szFileName), #0);
GetModuleFileName(hInstance, szFileName, MAX_PATH);
Result := szFileName;
end;
GOSTEI 0