假设txt文件为abc.txt,里面存放脚本内容如:执行操作A
延时(600)
执行操作B
延时(600)
执行操作C
.
.
.
.一行一个命令,如何操作使脚本一行一行执行呢最好有源码示例供分析,谢谢。

解决方案 »

  1.   

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

  2.   

    顺序好说,直接独到list中,不过要根据内容执行,你还要自己去解析了,不同的内容可能解析方法不一样,如果是方法名字,还可以考虑用RTTI去执行
      

  3.   


    没有实例哦,我想做的就是一个游戏辅助,实现脚本功能,脚本保存在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,就执行寻路的功能,我不知道该怎么衔接连贯起来,不知道怎么写,给出代码哦,马上给分,下午等着。
      

  4.   

    写过一个验证码识别的小程序用过
    我的方法比较简单
    先把相关的功能函数写好然后把脚本一行一行解析
    我是用  name=value 这样的格式
    清除背景(灰度)=130 因为TStrings 可以很方便地分解出=号前后值
    S_Name  := CheckListBox_ChuliCode.Items.Names[J];
    S_Value := CheckListBox_ChuliCode.Items.Values[S_Name];name就是相关函数名 value就是相关参考 如果是多参数 还可以继续分割valueif S_Name = '清除背景(灰度)' then
    begin
      Code_ClearBGofBrightness(BMP_Code, StrToInt(S_Value));
    end else
    if S_Name = '转成灰色'  then
    begin
      Code_ChangeToGray(BMP_Code);
    end;只适合由上到下顺序执行 只会这么多了
    要能做到像按键精灵那样的程度就爽了
      

  5.   

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