- 注册时间
- 2006-6-19
- 最后登录
- 2010-1-23
⑥精研
- 积分
- 2223
|
发表于 2007-11-27 19:06:36
|
显示全部楼层
[quote
原来在1.x可编译么...
在2.0我把不匹配的地方改到了匹配,例如说加上了cast(invariant)和代码页参数936,但……getName()怎么都会失败。去掉getName()的话倒能行
Phobos里的代码页相关代码实在太恶劣了……
去掉getName()之后:C:\\Downloads\\D\\dmd\\bin>run "我"
'我.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
运行的是 => 我.exe C:\\Downloads\\D\\dmd\\bin>run "我.exe"
'我.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
运行的是 => 我.exe - //run.d
- import std.process;
- import std.path;
- import std.windows.charset;
- import std.string;
- alias printf p;
- void main(char[][] args)
- {
- if (args.length == 2)
- {
- char[] filename;
- filename ~= addExt(fromMBSz(cast(invariant)args[1].ptr, 936), "exe");
- int i = system(toString(toMBSz(filename.idup)));
- p("%s\\n",toMBSz(cast(invariant)("\\n运行的是 => " ~ filename), 936));
- }
- else
- {
- p("%s\\n",toMBSz("错误: 你没有输入参数,或者输入超过一个以上的参数!", 936));
- p("%s\\n",toMBSz(r"例: 当输入 'run c:\\test\\test.d' 时调用 'c:\\test\\test.exe'", 936));
- }
- }
复制代码invariant(char)[] addExt(invariant(char)[] filename, invariant(char)[] ext);
Adds or replaces an extension to a filename.
This function first searches filename for an extension and replaces it with ext if found. If there is no extension, ext will be appended. ext should not have any leading dots, one will be inserted between filename and ext if filename doesn't already end with one.
Returns:
filename + ext if filename is extensionless. Otherwise strips filename's extension off, appends ext and returns the result. addExt()本来就不需要预先调用getName()... |
|