﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-我的一片天-随笔分类-Lua</title><link>http://www.cnitblog.com/xkz/category/8679.html</link><description>我的一片天</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 14:55:53 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 14:55:53 GMT</pubDate><ttl>60</ttl><item><title>Lua新手上路之来而不往非礼也(DELPHI) </title><link>http://www.cnitblog.com/xkz/archive/2010/05/16/66093.html</link><dc:creator>xyz</dc:creator><author>xyz</author><pubDate>Sat, 15 May 2010 17:59:00 GMT</pubDate><guid>http://www.cnitblog.com/xkz/archive/2010/05/16/66093.html</guid><wfw:comment>http://www.cnitblog.com/xkz/comments/66093.html</wfw:comment><comments>http://www.cnitblog.com/xkz/archive/2010/05/16/66093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/xkz/comments/commentRss/66093.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/xkz/services/trackbacks/66093.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我们之前学习的内容都是调用lua脚本中的函数，那怎么调用主程序中的函数啊。好，我们就来谈谈。<br>根据教材，lua是能跟主程序进行双向的调用的，但是主程序提供给lua调用的接口函数必须按照lua的标准来定义。<br>这个定义格式就是<br>function AppFunctionApi(LL: Plua_State): Integer; cdecl;<br> 并且要用lua的函数注册这个API，那在lua的脚本中就可以调用它了。<br><br>我们继续修改我们的test.lua脚本，如下<br>--test.lua<br>y=0<br>function add(x)<br>z=testAppApi("a1","a2","a3")  --增加了主程序的Api函数,我们传入3个字符串的参数<br>y=y+x+z<br>return y<br>end <br><br>下面我们在主程序中准备迎接lua调用的到来。注意,lua是大小写敏感的，因此要注意大小写哦<br>function AppApi(vL: Plua_State): Integer; cdecl;&nbsp;&nbsp;<a href='http://www.cnitblog.com/xkz/archive/2010/05/16/66093.html'>阅读全文</a><img src ="http://www.cnitblog.com/xkz/aggbug/66093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/xkz/" target="_blank">xyz</a> 2010-05-16 01:59 <a href="http://www.cnitblog.com/xkz/archive/2010/05/16/66093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lua新手上路之小试牛刀(DELPHI) </title><link>http://www.cnitblog.com/xkz/archive/2010/05/15/66092.html</link><dc:creator>xyz</dc:creator><author>xyz</author><pubDate>Sat, 15 May 2010 15:23:00 GMT</pubDate><guid>http://www.cnitblog.com/xkz/archive/2010/05/15/66092.html</guid><wfw:comment>http://www.cnitblog.com/xkz/comments/66092.html</wfw:comment><comments>http://www.cnitblog.com/xkz/archive/2010/05/15/66092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/xkz/comments/commentRss/66092.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/xkz/services/trackbacks/66092.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 对lua的使用有初步的了解后，我们稍微增加脚本里函数的复杂元素。<br>根据lua的教材，lua脚本中的变量除了用local定义外，全部变量都具有全局性，我们来尝试使用全局的特性。<br>照旧，先修改我们的lua脚本test.lua。<br>-- test.lua<br>y=0  --初始化y,不然会提示错误的,因为y的类型未决定<br>function add(x) <br>y=y+x<br>return y<br>end <br><br><br>上面的脚本很简单，就是对传入的x值进行累加并返回累加后的值<br><br>好了~~，上一篇千里之始足中代码可以完全不用修改哦，运行看看。是不是发现总是返回100啊！原因是我们是在button的事件里启用lua后执行完脚本的函数就关闭了，因此我们需要把lua的指针(代码中的L)放到Private中。<br>  private<br>    { Private declarations }<br>    L: Plua_State;<br><br>为了方面我们后续的不断扩展功能，我们把初始化放到一个butto&nbsp;&nbsp;<a href='http://www.cnitblog.com/xkz/archive/2010/05/15/66092.html'>阅读全文</a><img src ="http://www.cnitblog.com/xkz/aggbug/66092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/xkz/" target="_blank">xyz</a> 2010-05-15 23:23 <a href="http://www.cnitblog.com/xkz/archive/2010/05/15/66092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lua新手上路之千里之行始于足下(DELPHI)</title><link>http://www.cnitblog.com/xkz/archive/2010/05/15/66091.html</link><dc:creator>xyz</dc:creator><author>xyz</author><pubDate>Sat, 15 May 2010 14:56:00 GMT</pubDate><guid>http://www.cnitblog.com/xkz/archive/2010/05/15/66091.html</guid><wfw:comment>http://www.cnitblog.com/xkz/comments/66091.html</wfw:comment><comments>http://www.cnitblog.com/xkz/archive/2010/05/15/66091.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/xkz/comments/commentRss/66091.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/xkz/services/trackbacks/66091.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经过瞎子摸象篇，我们已经对lua有了初步感受。下面就开始我们的千里之行了。<br>下面我们尝试调用带参数的lua脚本函数。把之前的test.lua的内容做一下变动。<br>--test.lua<br>function add(x) <br>x=x+100<br>return x<br>end <br><br>把传入的数加100后返回。<br>把button事件里的代码修改成以下的内容<br>var<br><br>L: Plua_State;     //lua的引用类型,所有的lua方法都要用到这个<br><br>begin<br><br>  L := lua_open;  //建立一个lua的引用<br>  lua_baselibopen(L);   //引入lua的基础库函数<br>  luaL_loadfile(L, 'test.lua');  //载入我们的lua脚本<br>  lua_resume(L,0);              //解析脚本到lua<br>  <br>  lua_getglobal(L, 'add');    &nbsp;&nbsp;<a href='http://www.cnitblog.com/xkz/archive/2010/05/15/66091.html'>阅读全文</a><img src ="http://www.cnitblog.com/xkz/aggbug/66091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/xkz/" target="_blank">xyz</a> 2010-05-15 22:56 <a href="http://www.cnitblog.com/xkz/archive/2010/05/15/66091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lua新手上路之瞎子摸象(DELPHI)</title><link>http://www.cnitblog.com/xkz/archive/2010/05/15/66083.html</link><dc:creator>xyz</dc:creator><author>xyz</author><pubDate>Sat, 15 May 2010 10:57:00 GMT</pubDate><guid>http://www.cnitblog.com/xkz/archive/2010/05/15/66083.html</guid><wfw:comment>http://www.cnitblog.com/xkz/comments/66083.html</wfw:comment><comments>http://www.cnitblog.com/xkz/archive/2010/05/15/66083.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/xkz/comments/commentRss/66083.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/xkz/services/trackbacks/66083.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以前早就听说过lua,只是因为用不上就一直没涉及。最近考虑到可能用到，就学一学啦~<br>新手上路,自然是先看教材，吸取高人的经验。本人的原则是，首先要能让最简单的例程运行起来。<br><br><br>此教材是我学习lua的过程，希望对同样初次接触lua的人有所帮助，对于高手就一笑而过吧。<br><br>DELPHI要支持lua,先要下载lua的支持库,我是下载lua4delphi.zip来用的<br>把文件解压到一个目录,新建立的项目也存入这个目录.。当然你把它们放在另外的目录也可以,但是要把这个目录加到DELPHI的搜素目录里，还有把lua.dll复制到项目的目录里(必须依靠这个dll文件).<br><br>先看一个超简单lua的脚本test.lua<br><br>--注释是用双减号开始的,www.cnitblog.com/xkz<br>function add() <br>m="Yeah~~"<br>return m<br>end <br><br>上面是定义了一个lua的函数,返回m的串.我们就是要在delphi中调用这个函数来显示这个串.<b&nbsp;&nbsp;<a href='http://www.cnitblog.com/xkz/archive/2010/05/15/66083.html'>阅读全文</a><img src ="http://www.cnitblog.com/xkz/aggbug/66083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/xkz/" target="_blank">xyz</a> 2010-05-15 18:57 <a href="http://www.cnitblog.com/xkz/archive/2010/05/15/66083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>