hweifox
路人甲
路人甲
  • 注册日期2008-11-02
  • 发帖数8
  • QQ
  • 铜币126枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1505回复:3

[求助]求教一个简单问题,语句转换为字符串???

楼主#
更多 发布于:2008-11-06 02:36
<P >本人刚学<FONT face=Calibri>MapInfo</FONT>,现在在做一些二次开发的小工作,可是由于基础不好碰到了不少问题,现在有一块地方不懂,可能比较简单,但对我来说实在是太难了。</P>
<P >就是在<FONT face=Calibri>MapBasic</FONT>中,<FONT face=Calibri>run command</FONT>后面不是要跟一个字符串嘛,我在如何把一个语句转换成一个字符串上难住了,而且比较急。跪求各位老师尽快帮忙解决。我的语句是这样的:</P>
<P  align=left>ExtractDirection(CentroidX(strOriginTab.obj), CentroidY(strOriginTab.obj), CentroidX(strDestTab.obj), CentroidY(strDestTab.obj))  <p></p></P>
<P  align=left>其中ExtractDirection是我自己定义的函数,参数是两个表中的图形对象的坐标。我是这样写的:<p></p></P>
<P  align=left><FONT face=Calibri>“</FONT>ExtractDirection(CentroidX(" ; strOriginTab ; ".obj)" ; "," ; "CentroidY(" ; strOriginTab ; ".obj),CentroidX(" ; strDestTab ; ".obj),CentroidY(" ; strDestTab ; ".obj))"<p></p></P>
<P>其中strOriginTab ,strDestTab,strOriginTab,strDestTab是自定义的字符串。自我感觉这样是对的,可老是报错。 到底是怎么回事啊?</P>
喜欢0 评分0
hweifox
路人甲
路人甲
  • 注册日期2008-11-02
  • 发帖数8
  • QQ
  • 铜币126枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-11-06 02:44
<P 0cm 0cm 0pt">我在MapBasic的例子中找到,DistanceCalc例子中有一段是这样写的:<p></p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; tab-stops: 27.75pt 55.5pt 82.5pt 110.25pt 138.0pt 165.75pt 192.75pt 220.5pt 248.25pt 276.0pt 303.0pt 330.75pt 358.5pt 386.25pt 413.25pt 441.0pt 468.75pt 496.5pt 523.5pt 551.25pt 579.0pt 606.75pt 633.75pt 661.5pt 689.25pt 717.0pt 744.0pt 771.75pt 799.5pt 827.25pt 854.25pt 882.0pt; mso-layout-grid-align: none" align=left>strNearest = "Farthest " ; str$(intNumDist-1) ; " From Table " ; strOriginTab ; " To " ; strDestTab ; " Into TempBrowser" ; " Data " ; colOrigin ; "=" ; strOriginTab ; "." ; strOriginCol ; "," ; colDest ; "=" ; strDestTab ; "." ; strDestCol ; "," ; colDist ; "= ObjectDistance(" ; strOriginTab ; ".obj," ; strDestTab ; ".obj,""" ; strUnits(readControlValue(81)) ; """)" ; "," ; colUnit ; "=""" ; UnitName$(strUnits(readControlValue(81))) ; """," ; colCriteria1 ; "=""" ; strCritArg1 ; """," ; colCriteria2 ; "=""" ; strCritArg2 ; """"<p></p></P>
<P 0cm 0cm 0pt; TEXT-ALIGN: left; tab-stops: 27.75pt 55.5pt 82.5pt 110.25pt 138.0pt 165.75pt 192.75pt 220.5pt 248.25pt 276.0pt 303.0pt 330.75pt 358.5pt 386.25pt 413.25pt 441.0pt 468.75pt 496.5pt 523.5pt 551.25pt 579.0pt 606.75pt 633.75pt 661.5pt 689.25pt 717.0pt 744.0pt 771.75pt 799.5pt 827.25pt 854.25pt 882.0pt; mso-layout-grid-align: none" align=left>  ……<p></p></P>
<P 0cm 0cm 0pt"> run command strNearest<p></p></P>
<P 0cm 0cm 0pt">里面怎么用了这么多引号 " 啊?语法规定是什么样的啊?难道对于Farthest语句有特殊吗?<p></p></P>
举报 回复(0) 喜欢(0)     评分
hweifox
路人甲
路人甲
  • 注册日期2008-11-02
  • 发帖数8
  • QQ
  • 铜币126枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-11-06 08:52
<P>怎么没有人回复啊?给一点这方面的语法规则也行啊!真的很急啊!</P>
举报 回复(0) 喜欢(0)     评分
rodger
路人甲
路人甲
  • 注册日期2004-01-06
  • 发帖数92
  • QQ
  • 铜币323枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-11-22 16:32
<P>这个问题较为复杂,你可以阅读一下有关run command命令的说明。我在这里简单引述一下:</P>
<P>The <B>Run Command</B> statement has some restrictions, due to the fact that the <EM>command</EM> parameter is interpreted at run-time, rather than being compiled. You cannot use a <B>Run Command</B> statement to issue a <a href="mk:@MSITStore:C:\Program%20Files\MapInfo\MapBasic\MapBasic.chm::/MapBasic-05-14.html" target="_blank" >Dialog statement</A>. Also, variable names may not appear within the <EM>command</EM> string; that is, variable names may not appear enclosed in quotes. For example, the following group of statements would not work, because the variable names <EM>x</EM> and <EM>y</EM> appear inside the quotes that delimit the command string: </P>
<P>翻译:run command 语句有一些限制,处理命令参数的时候是运行时解释执行的而不是通过编译。你不能在run command中使用对话框语句,也不能在命令行字符串中出现变量名。……<BR>如果你解释器和编译器是两个单独的过程,你就可以很容易理解,如果变量名不能出现在语句中,你自己自定义的函数也不能出现,因为解释器根本不知道你定义过这个这样一个函数。<BR>帮助文档中有例子说明了如何解决变量的问题,至于函数,如果你了解alias变量类型,我想你就不需要在解释器中运行自定义函数了。</P>
<P>祝好运</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部