点击或拖拽改变大小

Functions.SplitPath 方法 (String, String, String, String, String)

X#
将路径名拆分为其组件。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION SplitPath(
	pszPathName AS STRING,
	pszDrive REF STRING,
	pszDir REF STRING,
	pszFile REF STRING,
	pszExt REF STRING
) AS VOID
查看代码

参数

pszPathName
类型:String
要拆分的路径名。
pszDrive
类型:String
驱动器字母后跟冒号。pszDrive 必须包含 2 个字节,以及 1 个字节用于终止的 _Chr(0) 字符。
pszDir
类型:String
目录,包括尾部斜杠。
pszFile 中可能同时存在正斜杠和反斜杠。
正斜杠 (/) 会转换为反斜杠 (\)。pszDir 必须包含 255 个字节,以及 1 个字节用于终止的 _Chr(0) 字符。
pszFile
类型:String
文件名,不带扩展名。pszFile 必须包含 255 个字节,以及 1 个字节用于终止的 _Chr(0) 字符。
pszExt
类型:String
扩展名,包括前导句点。pszExt 必须包含 7 个字节,以及 1 个字节用于终止的 _Chr(0) 字符。

返回值

类型:
备注
SplitPath() 将路径名拆分为其组件并将结果存储在提供的参数中。
提供的参数必须有足够的空间来容纳拆分组件的最大可能大小。
如果路径名中缺少任何组件,则相应的参数将被截断为 0 长度。
示例
此示例将完整路径名拆分为其四个组件:
X#
 1FUNCTION Start()
 2    LOCAL cDrive, cDir, cFile, cExt AS STRING
 3    MySplitPath("c:\develop\myprg\hello.prg", ;
 4        @cDrive, @cDir, @cFile, @cExt)
 5    ? cDrive            // C:
 6    ? cDir            // \DEVELOP\MYPRG
 7    ? cFile            // HELLO
 8    ? cExt             // .PRG
 9FUNCTION MySplitPath(cPath AS STRING,    ;
10    cDrive REF STRING,            ;
11    cDir REF STRING,            ;
12    cFile REF STRING,            ;
13    cExt REF STRING)
14    LOCAL pszPath, pszDrive, pszDir AS PSZ
15    LOCAL pszFile, pszExt AS PSZ
16    LOCAL cb
17    pszPath := MemAlloc(cb := SLen(cPath) + 1)
18    MemCopy(pszPath, PTR(_CAST, cPath), cb)
19    pszDrive := MemAlloc(2+1)
20    pszDir   := MemAlloc(255+1)
21    pszFile  := MemAlloc(255+1)
22    pszExt   := MemAlloc(7+1)
23    SplitPath(cPath, pszDrive, pszDir,    ;
24        pszFile, pszExt)
25    cDrive := Psz2String(pszDrive)
26    cDir   := Psz2String(pszDir)
27    cFile  := Psz2String(pszFile)
28    cExt   := Psz2String(pszExt)
29    MemFree(pszDrive)
30    MemFree(pszDir)
31    MemFree(pszFile)
32    MemFree(pszExt)
33    RETURN
此示例显示,如果路径名中缺少相应组件,则提供的参数将被截断为 0 长度:
X#
1FUNCTION Start()
2    LOCAL cDrive, cDir, cFile, cExt AS STRING
3    MySplitPath("c:\develop\myprg\hello", ;
4        @cDrive, @cDir, @cFile, @cExt)
5    ? cDrive            // C:
6    ? cDir            // \DEVELOP\MYPRG
7    ? cFile            // HELLO
8    ? SLen(cExt)         // 0
参见