SplitPath Function (String, String, String, String, String) | |
Break a path name into its components.
Namespace:
XSharp.RT
Assembly:
XSharp.RT (in XSharp.RT.dll) Version: 2.21
Syntax FUNCTION SplitPath(
pszPathName AS STRING,
pszDrive REF STRING,
pszDir REF STRING,
pszFile REF STRING,
pszExt REF STRING
) AS VOID
public static void SplitPath(
string pszPathName,
ref string pszDrive,
ref string pszDir,
ref string pszFile,
ref string pszExt
)
Request Example
View SourceParameters
- pszPathName
- Type: String
The path name to break. - pszDrive
- Type: String
The drive letter followed by a colon. pszDrive must contain 2 bytes, plus 1 byte for the terminating _Chr(0) character.
- pszDir
- Type: String
The directories, including the trailing slash.
Forward slashes and backslashes both may be present in pszFile.
Forward slashes (/) are converted to backslashes (\). pszDir must contain 255 bytes, plus 1 byte for the terminating _Chr(0) character.
- pszFile
- Type: String
The file name, without the extension. pszFile must contain 255 bytes, plus 1 byte for the terminating _Chr(0) character.
- pszExt
- Type: String
The extension, including the leading period. pszExt must contain 7 bytes, plus 1 byte for the terminating _Chr(0) character.
Return Value
Type:
Remarks
SplitPath() breaks a path name into its components and stores the result in the supplied arguments.
The supplied arguments must have enough space to hold the maximum possible size of the broken components.
If any of the components is missing in the path name, the corresponding argument is truncated to a 0 length.
Examples
This example breaks a full path name into its four components:
1FUNCTION Start()
2 LOCAL cDrive, cDir, cFile, cExt AS STRING
3 MySplitPath("c:\develop\myprg\hello.prg", ;
4 @cDrive, @cDir, @cFile, @cExt)
5 ? cDrive
6 ? cDir
7 ? cFile
8 ? cExt
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
This example shows that the supplied argument is truncated to 0 length if its corresponding component is missing in the path name:
1FUNCTION Start()
2 LOCAL cDrive, cDir, cFile, cExt AS STRING
3 MySplitPath("c:\develop\myprg\hello", ;
4 @cDrive, @cDir, @cFile, @cExt)
5 ? cDrive
6 ? cDir
7 ? cFile
8 ? SLen(cExt)
See Also