gamehero 发表于 2009-4-6 21:27:24

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

dim x
x=-103.2

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

不胜感激!

ceoguang 发表于 2009-4-6 21:37:56


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

测试正常

gamehero 发表于 2009-4-6 21:43:41

可能是数据的长度类型有关吧,因为我是在写游戏的外挂脚本

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

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

不知道AU3是否可以将变量定义为Float

gamehero 发表于 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,
        Mov_EAX_DWORD_Ptr_EAX_Add(0x1c);mov eax,
        Mov_ECX_DWORD_Ptr_EAX_Add(0x24);mov ecx,
        Lea_ecx_DWORD_Ptr_ECX_Add(0x3c);lea ecx,
        MOV_EAX_DWORD_PTR_EAX_ADD(0x08);mov eax,
        MOV_EAX_DWORD_PTR_EAX_ADD(0x88);mov eax,
        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 编辑 ]

gamehero 发表于 2009-4-6 22:02:23

dim $x
$x=-132.2
Msgbox(0, "Types", VarGetType($x))

这样是double的,我想要Float,不知道怎么操作

class 发表于 2009-4-6 22:06:52

StringFormat

gamehero 发表于 2009-4-6 22:17:17

StringFormat不行...刚还以为能行呢...
写到内存里都乱了,连正数都不行了....

[ 本帖最后由 gamehero 于 2009-4-6 22:25 编辑 ]

pusofalse 发表于 2009-4-6 22:49:54

单精度?~ 不知道啥意思,- -||||。。。
约摸着写了一个。。
$t = DllStructCreate("float")
DllStructSetData($t, 1, -103.2)
Msgbox(0, '', DllStructGetData($t, 1))或者楼主看下_WinAPI_IntToFloat()函数,说不定会受到启发。

gamehero 发表于 2009-4-7 09:01:14

唉。。。怎么说呢。。。
其实在C语言里很简单,就是定义一个单精度数据:
Float x;   //定义单精度就这么一句话就完了
Double y   //这是双精度

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

换种成AU3,就不知道怎么弄了。。。。期待

sxd 发表于 2009-4-8 03:45:45

DllStructCreate("float")
?

gamehero 发表于 2009-4-8 10:17:57

都试了,似乎都不行。。。唉。。。麻烦

ddx13 发表于 2009-4-8 10:57:17

先以字符的形式出现$x="-13.0"
然后字符转数值。那样什么样的都可以确认出来。
页: [1]
查看完整版本: AU3如何定义一个单精度变量?