//??/C:/Test.exe怎么过滤成C:/Test.exe(50分)

  • 主题发起人 主题发起人 l0v3_y1n9
  • 开始时间 开始时间
L

l0v3_y1n9

Unregistered / Unconfirmed
GUEST, unregistred user!
别用pos和copy等函数,很不实用...<br>我尝试挂钩NtCreateFile,得出的文件名结果是//??/C:/Test.exe这是一种Windows的路径格式,我想通过相关API函数实现转换成C:/Test.exe
 
两个问号是啥?
 
直接删除前面的字符啊<br>Delete就可以了
 
//??/是正常的,符号连接就是这个样子,楼主直接写个小函数把前缀去掉就行了
 
前面字符是固定的就好办,或者长度固定
 
本来就长度固定,一定是<br>//??/<br>的<br>不过你还是要用Copy或者Pos判断,因为除了这样的,还有别的样式的(那是在打开端口啊,硬盘啊,等硬件设备的时候用的,写法和//??/不同),判断后再删除才保险。
 
最简单的方法:<br>function MyStrFilter(const S: String): String;<br>var<br>&nbsp; X, Y: Integer;<br>begin<br>&nbsp; SetLength(Result, 0);<br>&nbsp; X:= AnsiPos(':/', S);<br>&nbsp; if X &gt;= 2 then begin<br>&nbsp; &nbsp; Y:= Length(S) - X + 2;<br>&nbsp; &nbsp; SetLength(Result, Y);<br>&nbsp; &nbsp; Move(S[X-1], Result[1], Y);<br>&nbsp; end;<br>end;
 
算了,还是结了吧.
 

Similar threads

回复
0
查看
978
不得闲
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部