日期:2014-05-18  浏览次数:20375 次

各位大哥救就小弟吧!5555
我调用一个test.exe文件,传递一个参数,如   I   am   a   chinese
在dos   里运行结果为
        ....
            +--------Ost------+
             
        +-SX-+     +--Dsu------+
              |         |     |                 |
          I.p   am.v   a   chinese[?].n
        ......
可是在程序里运行时,接受到的值为空,为什么?还有,我应该用什么类型的值接受运行的结果,用string   类型是错误的。最重要的一点,我要对接收到的结果进行这样的操作:当鼠标停在SX   上时,显示‘主谓关系‘(具体什么关系忘了),当鼠标停在dsu   上时,显示‘主宾关系‘,(还有好多,就是分析句子结构),这怎么实现阿?大哥们帮帮忙,我就这么点分了,请见谅?

    调用test.exe的代码为:
      string   fanyi   =   this.TextBox1.Text.Trim().ToString();
System.Diagnostics.ProcessStartInfo     Info     =     new     System.Diagnostics.ProcessStartInfo( "C:\\dic\\test.exe ");
//   Info.WorkingDirectory     =     "C:\\Inetpub\\wwwroot\\lianxi ";
Info.UseShellExecute   =   false;
Info.RedirectStandardInput   =   true;
Info.RedirectStandardOutput   =   true;
Info.RedirectStandardError   =   true;
Info.CreateNoWindow   =   true;
                                         

System.Diagnostics.Process     p     ;


try
{
p   =   new   Process();
p.StartInfo=Info;
p.StartInfo.Arguments=fanyi;

p.Start();
//string   strOutput   =   p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();

this.Label1.Text=strOutput;

}
catch(Exception     ee)
{
Response.Write( "系统找不到指定的程序文件: "+   ee.Message);
return   ;
}


------解决方案--------------------
语法分析在编译原理的教程中都说提到,所以分析目标不同,但你可以去借鉴下它的思想。但这块功能应该不是一下子就能搞出来的。

至于控制台程序运行的结果传送到asp.net的程序中需要用到控制台管道操作,这个你去搜索一下管道操作或者asp.net 管道操作应该能查到吧。我2年前写那个程序的时候就是搜到管道操作的例子的。
------解决方案--------------------
using System.Diagnostics;

Process.Start( "C:\\dic\\test.exe ");

这样就够了吧!test.exe不是已经做了所有的工作了吗?
------解决方案--------------------
SX 是什么? 按钮的话,就加个提示,或鼠标停留事件