易语言子程序问题

查看 82|回复 6
作者:jinxiao880   
[Asm] 纯文本查看 复制代码.版本 2
.支持库 eAPI
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 取进程ID, 整数型
.程序集变量 进程信息, 进程信息, , "0"
.子程序 __启动窗口_创建完毕
.局部变量 n, 整数型
进程信息 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (进程信息), n)
    .如果真 (进程信息 [n].进程名称 = “PlantsVsZombies.exe”)
        取进程ID = 进程信息 [n].进程标识符
        跳出循环 ()
    .如果真结束
.计次循环尾 ()
调试输出 (取进程ID)
.子程序 _按钮1_被单击
内存.写整数 (取进程ID, 阳光 (), 到整数 (编辑框1.内容), )
' 编辑框1.内容 = 到文本 (进制_十到十六 (阳光 ()))
.子程序 _时钟1_周期事件
.子程序 阳光, 整数型
.参数 基址, 整数型
.参数 偏移1, 整数型
.参数 偏移2, 整数型
基址 = 内存.读整数 (取进程ID, 到整数 (进制_十六到十 (“00755F28”)))
偏移1 = 内存.读整数 (取进程ID, 基址 + 到整数 (进制_十六到十 (“868”)))
偏移2 = 偏移1 + 到整数 (进制_十六到十 (“5578”))
返回 (偏移2)
问一下各路大神,小弟初学乍道,这个我是按照教程做的,这个阳光的子程序调用,为什么如果我在参数值勾选可空 ,就会提示 “调用子程序“阳光”时所传递的参数太少”,我看别人不勾选 可空没有报错,直接是在按钮1 下面 阳光()  就可以直接运行?是用了什么模块吗?
另外还有个问题,子程序 为什么是返回的   (偏移2),这个是干啥用的?我看了几个子程序的教程,也都没有说明白,各位能帮忙解释下吗

整数, 子程序

bester   

假设,我叫小光(阳光),我的老板叫按钮(按钮1),有一天,老板叫我去银行取200块钱,所以老板需要给我银行卡和密码(偏移1,偏移2),我到银行后,要告诉我的老板 我到底有没有取出200块(返回)
所以逻辑是  老板->小光执行取钱事件(提供银行卡,密码)->返回结果
另外 按代码来看,你的基址、偏移1、偏移2 应该不是参数,应该是定义为变量,因为你的基址是由你执行的内存.读整数得到的,而不是一开始就已知的
bester   

猜测你应该你是复制别人的代码,因为复制粘贴会把变量粘贴成参数,正确的做法是在子程序阳光点击一下,然后按Ctrl+L 把这三个参数改成变量,变量名还是基址、偏移1,偏移2  应该可以解决问题
jinxiao880
OP
  


bester 发表于 2023-4-21 11:30
猜测你应该你是复制别人的代码,因为复制粘贴会把变量粘贴成参数,正确的做法是在子程序阳光点击一下,然后 ...

我明白了,不是复制的,我是看了一遍教程手打出来的,不过我给子程序定义参数 把可空勾上或者我在调用的时候 给子程序 随便几个参数,好像和这效果一样的  
jinxiao880
OP
  


bester 发表于 2023-4-21 11:24
假设,我叫小光(阳光),我的老板叫按钮(按钮1),有一天,老板叫我去银行取200块钱,所以老板需要给我银行卡 ...

怪不得 ,我还纳闷,为啥,这个子程序直接在参数定义出直接给了结果多此一举
W7mLCytr   

易语言看起来就是别扭,输入的时候也是中英切换
myindenture   

感觉那些参数是变量
您需要登录后才可以回帖 登录 | 立即注册

返回顶部