tmpdir:stringconstmax_path=array
of
getsystemdirectory(tmpdir,MAX_PATH)
//取得windows目录
c:\windows
GetWindowsDirectory(tmpdir,MAX_PATH)
//取得应用程序所在的路径
Vfilepath:=application.ExeName
Application.ExeName可以获得当前程序路径var windir:array [0..255] of charGetWindowsDirectory(windir,255)
Result :=windir获取系统路径
方法有二,如下详述:一、循环测试
已知相对路径,与绝对路径之差仅在于根路径,即探索究竟在哪个分区上,那么,最傻瓜的方法就是从C循环至Z,逐一测试路径是否存在,大致代码为:
function GetEurekaLogDir : string
const
C_sDir : string = 'Eurekalog 5\delphi5'
var
i : Integer
s : string
begin
Result := ''
for i := Ord( 'C' ) to Ord( 'Z' ) do
begin
s := Chr( i ) + ':\' + C_sDir
if DirectoryExists( s ) then
begin
Result := s
Exit
end
end
end
也可以增加一点儿“技术含量”,不是简单地从C循环至Z,而是先获取系统具有的分区配置,仅在配置列表中循环测试,调用GetLogicalDrives或GetLogicalDriveStrings均可实现。
二、查询注册表
不少软件安装后,会在注册表中记录其安装位置,对于EurekaLog的安装位置,可以手工打开注册表编辑器(RegEdit),查找到它的位置,记住其关键的路径,然后编程序获取该路径下的键值。
这个方法应该更加正规,它还支持软件在安装之际,人为改变了安装路径的情形。例如,你把EurekaLog安装在"c:\program files\myPreferred"等不带EurekaLog字样的路径下时,也能找到它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)