找回密码
 加入
搜索
查看: 2280|回复: 11

AU3如何定义一个单精度变量?

[复制链接]
发表于 2009-4-6 21:27:24 | 显示全部楼层 |阅读模式
dim x
x=-103.2

这个数在后面的内存存取过程中会出错,但用正数却不会有问题,
现在需要把这个数定义为单精度浮点类型,请教高人~~

不胜感激!
发表于 2009-4-6 21:37:56 | 显示全部楼层

dim $x =-103.2
MsgBox(0,"",$x)

测试正常
 楼主| 发表于 2009-4-6 21:43:41 | 显示全部楼层
可能是数据的长度类型有关吧,因为我是在写游戏的外挂脚本

$x是需要需要以单精度浮点类型写入,角色能跑到这个$x的坐标,

现在Delphi里也碰到同样问题,但将这个坐标变量定义为Float类型,即可解决变量为负数时所出的问题.

不知道AU3是否可以将变量定义为Float
 楼主| 发表于 2009-4-6 21:54:57 | 显示全部楼层
Func SearchWay($X,$Y)
        pushad();pushad
        Mov_eax($JiZhi);mov eax,BaseAddress
        Mov_EAX_DWORD_Ptr_EAX();mov eax,[eax]
        Mov_EAX_DWORD_Ptr_EAX_Add(0x1c);mov eax,[eax+$1C]
        Mov_ECX_DWORD_Ptr_EAX_Add(0x24);mov ecx,[eax+$24]
        Lea_ecx_DWORD_Ptr_ECX_Add(0x3c);lea ecx,[ecx+$3C]
        MOV_EAX_DWORD_PTR_EAX_ADD(0x08);mov eax,[eax+$8]
        MOV_EAX_DWORD_PTR_EAX_ADD(0x88);mov eax,[eax+$88]
        PUSH_EAX();push eax
        MOV_EAX($X);mov eax,-76
        Mov_DWORD_Ptr_EAX(0x00961AE0);mov ds:[$961AE0],eax
        Mov_eax(0);mov eax, 0
        Mov_DWORD_Ptr_EAX(0x00961AE0+0x4);mov ds:[$961AE0 +$4], eax
        Mov_Eax($Y);mov eax, -38
        Mov_DWORD_Ptr_EAX(0x00961AE0+0x8);mov ds:[$961AE0+$8], eax
        Push(0x00961AE0);push $961AE0
        Push_Ecx();push ecx
        Mov_Ecx(0x0095BDB0);mov ecx,$0095BDB0
        Mov_Eax(0x0042A140);mov eax,$0042A140
        Call_Eax();call eax
        Popad();popad
        ret()
        Run_ASM($Hawd)
EndFunc


以上是代码,我需要传入变量$X和$Y,一旦传入的参数中出现负数,就会出错

[ 本帖最后由 gamehero 于 2009-4-6 21:55 编辑 ]
 楼主| 发表于 2009-4-6 22:02:23 | 显示全部楼层
dim $x
$x=-132.2
Msgbox(0, "Types", VarGetType($x))


这样是double的,我想要Float,不知道怎么操作
发表于 2009-4-6 22:06:52 | 显示全部楼层
StringFormat
 楼主| 发表于 2009-4-6 22:17:17 | 显示全部楼层
StringFormat不行...刚还以为能行呢...
写到内存里都乱了,连正数都不行了....

[ 本帖最后由 gamehero 于 2009-4-6 22:25 编辑 ]
发表于 2009-4-6 22:49:54 | 显示全部楼层
单精度?~ 不知道啥意思,- -||||。。。
约摸着写了一个。。
$t = DllStructCreate("float")
DllStructSetData($t, 1, -103.2)
Msgbox(0, '', DllStructGetData($t, 1))
或者楼主看下_WinAPI_IntToFloat()函数,说不定会受到启发。
 楼主| 发表于 2009-4-7 09:01:14 | 显示全部楼层
唉。。。怎么说呢。。。
其实在C语言里很简单,就是定义一个单精度数据:
Float x;     //定义单精度就这么一句话就完了
Double y     //这是双精度

VB里就是
Dim x as Float;
Dim y as Double;

换种成AU3,就不知道怎么弄了。。。。期待
发表于 2009-4-8 03:45:45 | 显示全部楼层
DllStructCreate("float")
?
 楼主| 发表于 2009-4-8 10:17:57 | 显示全部楼层
都试了,似乎都不行。。。唉。。。麻烦
发表于 2009-4-8 10:57:17 | 显示全部楼层
先以字符的形式出现$x="-13.0"
然后字符转数值。那样什么样的都可以确认出来。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 09:10 , Processed in 0.097193 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表