幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: shawind

[通用编程] [分享]调用其他EXE

[复制链接]

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-11-23 18:20:43 | 显示全部楼层
上面那段就是RPython程序...既然不是普通(完整)Python,就无从比较了,原因上面说了.
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-11-24 09:51:47 | 显示全部楼层
偶只知道exec...且不适合在WIN下用_
Style-C
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2007-11-24 11:00:19 | 显示全部楼层
引用第10楼rednaxela于2007-11-23 18:20发表的  :
上面那段就是RPython程序...既然不是普通(完整)Python,就无从比较了,原因上面说了.
原来是这样。完整不完整,无所谓了。反正我又不会这个。
引用第11楼lw于2007-11-24 09:51发表的  :
偶只知道exec...且不适合在WIN下用_
我是完全没在非Win下试过使用这样的功能。
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-11-27 18:14:31 | 显示全部楼层
我有个疑问……shawind,顶楼的代码能编译通过么?用什么版本的编译器?GDC还是DMD?
fromMBSz的signature不是invariant(char)*,int,toMBSz的不是invariant(char)[],uint么……
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2007-11-27 18:41:21 | 显示全部楼层
dmd 1.x可过,2.0dmd我从来没用过... [s:5]
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
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
  1. //run.d
  2. import std.process;
  3. import std.path;
  4. import std.windows.charset;
  5. import std.string;
  6. alias printf p;
  7. void main(char[][] args)
  8. {
  9.     if (args.length == 2)
  10.     {
  11.         char[] filename;
  12.         filename ~= addExt(fromMBSz(cast(invariant)args[1].ptr, 936), "exe");
  13.         int i = system(toString(toMBSz(filename.idup)));
  14.         p("%s\\n",toMBSz(cast(invariant)("\\n运行的是 => " ~ filename), 936));
  15.     }
  16.     else
  17.     {
  18.         p("%s\\n",toMBSz("错误: 你没有输入参数,或者输入超过一个以上的参数!", 936));
  19.         p("%s\\n",toMBSz(r"例: 当输入 'run c:\\test\\test.d' 时调用 'c:\\test\\test.exe'", 936));
  20.     }
  21. }
复制代码
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()...
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2007-11-27 20:43:46 | 显示全部楼层
2.0的phobos中invariant之类的,都是直接批量加上去的,可能用起来是会有点问题,不过作者一直没有时间来修正。
真正能用的就是1.x系列。

像addExt()这样的函数,我几乎不怎么用,它到底是干什么也不知道....
[s:5]
え~え~お!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 22:45 , Processed in 0.025917 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表