- (*
- 相对路径和绝对路径的转换
- *)
- unit xPath;
- interface
- uses ShlwApi, Windows, SysUtils;
- /// <summary>
- /// 取绝对路径的函数。需要引用 ShlwApi.pas
- /// </summary>
- /// <param name="BasePath">参考路径</param>
- /// <param name="RelativePath">相对路径</param>
- /// <code>
- /// S := GetAbsolutePath('C:\Windows\System32', '..\DEMO.TXT')
- // S 将得到 'C:\Windows\DEMO.TXT
- /// </code>
- function GetAbsolutePathEx(BasePath, RelativePath:string):string;
- /// <summary>
- /// 取得本身程序的路径
- /// </summary>
- function AppPath : string;
- function GetRelativePath(const Path, AFile: string): string;
- implementation
- function GetAbsolutePathEx(BasePath, RelativePath:string):string;
- var
- Dest:array [0..MAX_PATH] of char;
- begin
- FillChar(Dest,MAX_PATH+1,0);
- PathCombine(Dest,PChar(BasePath), PChar(RelativePath));
- Result:=string(Dest);
- end;
- function GetRelativePath(const Path, AFile: string): string;
- function GetAttr(IsDir: Boolean): DWORD;
- begin
- if IsDir then
- Result := FILE_ATTRIBUTE_DIRECTORY
- else
- Result := FILE_ATTRIBUTE_NORMAL;
- end;
- var
- p: array[0..MAX_PATH] of Char;
- begin
- PathRelativePathTo(p, PChar(Path), GetAttr(False), PChar(AFile), GetAttr(True));
- Result := StrPas(p);
- end;
- function AppPath : string;
- begin
- Result := extractFilePath(Paramstr(0));
- end;
- end.
- (*
- ExpandFileName() 返回文件的全路径(含驱动器、路径)
- ExtractFileExt() 从文件名中抽取扩展名
- ExtractFileName() 从文件名中抽取不含路径的文件名
- ExtractFilePath() 从文件名中抽取路径名
- ExtractFileDir() 从文件名中抽取目录名
- ExtractFileDrive() 从文件名中抽取驱动器名
- ChangeFileExt() 改变文件的扩展名
- ExpandUNCFileName() 返回含有网络驱动器的文件全路径
- ExtractRelativePath() 从文件名中抽取相对路径信息
- ExtractShortPathName() 把文件名转化为DOS的8·3格式
- MatchesMask() 检查文件是否与指定的文件名格式匹配
- ExtractFilePath(FileName:String)
- 该函数返回路径名,其结尾字符总是“\”
- ExtractFileDir(FileName:String)
- *)