delphi如何读取txt内容并按顺序执行脚本内容

153608789 2011-07-23 11:25:25
假设txt文件为abc.txt,里面存放脚本内容如:

执行操作A
延时(600)
执行操作B
延时(600)
执行操作C
.
.
.
.

一行一个命令,如何操作使脚本一行一行执行呢

最好有源码示例供分析,谢谢。
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2011-07-23
  • 打赏
  • 举报
回复
顺序好说,直接独到list中,不过要根据内容执行,你还要自己去解析了,不同的内容可能解析方法不一样,如果是方法名字,还可以考虑用RTTI去执行
浩南_哥 2011-07-23
  • 打赏
  • 举报
回复
用tstringlist加载文本,tstringlist[0]即为第一行,tstringlist[1]第二行。
你最好也能给个实例好分析。
153608789 2011-07-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sqldebug_fan 的回复:]

把文本加载到TStringList中,然后解析就可以了,看你写的autowalkcall很不错啊,不会写遍历TStringList?
[/Quote]

不会呀兄弟,能否贴点源码给我。万分感谢。
SQLDebug_Fan 2011-07-23
  • 打赏
  • 举报
回复
把文本加载到TStringList中,然后解析就可以了,看你写的autowalkcall很不错啊,不会写遍历TStringList?
ADSLAN 2011-07-23
  • 打赏
  • 举报
回复
写过一个验证码识别的小程序用过
我的方法比较简单
先把相关的功能函数写好

然后把脚本一行一行解析
我是用 name=value 这样的格式
清除背景(灰度)=130

因为TStrings 可以很方便地分解出=号前后值
S_Name := CheckListBox_ChuliCode.Items.Names[J];
S_Value := CheckListBox_ChuliCode.Items.Values[S_Name];

name就是相关函数名 value就是相关参考 如果是多参数 还可以继续分割value

if S_Name = '清除背景(灰度)' then
begin
Code_ClearBGofBrightness(BMP_Code, StrToInt(S_Value));
end else
if S_Name = '转成灰色' then
begin
Code_ChangeToGray(BMP_Code);
end;

只适合由上到下顺序执行 只会这么多了
要能做到像按键精灵那样的程度就爽了
153608789 2011-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 m617105 的回复:]

用tstringlist加载文本,tstringlist[0]即为第一行,tstringlist[1]第二行。
你最好也能给个实例好分析。
[/Quote]

没有实例哦,我想做的就是一个游戏辅助,实现脚本功能,脚本保存在TXT文件里,例如脚本:

等待:6000 //第一行
寻路:160/143
打开NPC:周一仙
关闭NPC
接任务:599


等待,寻路,打开NPC,关闭NPC,接任务这些功能我能做好
如寻路过程代码
//==================自动寻路==================
procedure autowalkcall(p:pWalkcallparam);stdcall;
var
x,y,z: single;
begin
x := p^.x;
y := p^.y;
z := p^.z;
asm
pushad
push 0
MOV EAX,DWORD PTR DS:[$00BB0ED4] //游戏基址
MOV ECX,DWORD PTR DS:[EAX+$1C]
MOV ECX,DWORD PTR DS:[ECX+$8]
MOV EBX,DWORD PTR DS:[ECX+$90] //1C+8+90为地图ID
push ebx

mov eax, x
mov [$00BC3590], eax //寻路PUSH
mov eax, z
mov [$00BC3590+4], eax //寻路PUSH
mov eax, y
mov [$00BC3590+8], eax //寻路PUSH
mov eax, dword ptr [$00BB0ED4] //游戏基址
mov eax, dword ptr [eax+$1c]
mov eax, dword ptr [eax+$28]
lea eax, dword ptr [eax+$3C] //本来是3c,当前坐标的值


push $00BC3590 //寻路PUSH
push eax
mov ecx, $00BB0E78 //寻路MOV
mov eax, $00440900 //寻路CALL
call eax
popad
end;
end;

我的问题所在就是我该如何读取TXT的脚本到listview,然后一行一行的执行下去,等待:6000 就执行过程等待6000毫秒
寻路:160/143,就执行寻路的功能,我不知道该怎么衔接连贯起来,不知道怎么写,给出代码哦,马上给分,下午等着。

5,385

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧