ac5474012 发表于 2009-12-21 16:37:26

如何将循环中得到的值,加入数组?

本帖最后由 ac5474012 于 2009-12-23 10:58 编辑

下面是个例子,我想将$rCPU在循环中的20个值分别加入20个数组,在算平均值。但是$rCPUzh[$a]=$rCPU这句显然不恰当。请问如何解决?$a =1
Local $rCPUzh
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd
已经解决了,是我对基础知识不熟

netegg 发表于 2009-12-21 16:51:44

本帖最后由 netegg 于 2009-12-21 16:59 编辑

$rCPUzh这是个什么玩意?数组?
$rCPU又是个什么玩意?
是不是想这样?
local $rCpunow, $rCpupast=0, $rCpu, $a=1
while a <= 20
$rCpunow= currentcpurate()
$rCpu =$rCpunow +$rCpupast
$rCpupast= $rCpu
$a += 1
wend
$average = $rCpu / 20

ac5474012 发表于 2009-12-21 17:07:43

$rCPUzh这是个什么玩意?数组?
$rCPU又是个什么玩意?
是不是想这样?
local $rCpunow, $rCpupast=0, $ ...
netegg 发表于 2009-12-21 16:51 http://www.autoitx.com/images/common/back.gif

不 $rCPUzh 是一个数组,$rCPU是一个数值。我在循环中取得20个,我想把他们编入数组在算平均值。上面只是个部分代码。下面是全部代码。#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
       
        Au3 版本:
        脚本作者:AC
        Email:guojimail@gmail.com
        QQ/TM:651420196
        脚本版本:
        脚本功能:
        1.检测CPU使用率
        2.检测内存使用率
        3.检测硬盘使用率
        主体程序已经完成,将这个放在计划任务中每小时执行一次。
        有待完成
        1.检测SQL是否正常
        2.将检测的数据回传
        3.将系统日志回传
        4.提醒每天是否有回传(用于检测软件是否正常运行)
        5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh $a
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh,$rCPUzh&$rCPUzh&$rCPUzh&$rCPUzh)
Func CurrentCPURate()
        $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
        $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
        For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
        Next
        Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
        Local $Array
        $Array = MemGetStats()
        Return $Array
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
      For $i = 1 To $cppf
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "\")            
                $kykj = DriveSpaceFree($pf & "\")
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", "磁盘空间" , $i&"检测时间 "& $sxdx, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
      Next
        EndIf
        EndFunc   ;==>CurrentRAMRate

ac5474012 发表于 2009-12-21 17:13:55

解决了

是变量错了#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
       
        Au3 版本:
        脚本作者:AC
        Email:guojimail@gmail.com
        QQ/TM:651420196
        脚本版本:
        脚本功能:
        1.检测CPU使用率
        2.检测内存使用率
        3.检测硬盘使用率
        主体程序已经完成,将这个放在计划任务中每小时执行一次。
        有待完成
        1.检测SQL是否正常
        2.将检测的数据回传
        3.将系统日志回传
        4.提醒每天是否有回传(用于检测软件是否正常运行)
        5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh,$rCPUzh&$rCPUzh&$rCPUzh&$rCPUzh)
Func CurrentCPURate()
        $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
        $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
        For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
        Next
        Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
        Local $Array
        $Array = MemGetStats()
        Return $Array
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
      For $i = 1 To $cppf
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "\")            
                $kykj = DriveSpaceFree($pf & "\")
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", "磁盘空间" , $i&"检测时间 "& $sxdx, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
      Next
        EndIf
        EndFunc   ;==>CurrentRAMRate

l4ever 发表于 2009-12-21 17:54:12

帮你改进一下:#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                               ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                               ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
      
      Au3 版本:
      脚本作者:AC
      Email:guojimail@gmail.com
      QQ/TM:651420196
      脚本版本:
      脚本功能:
      1.检测CPU使用率
      2.检测内存使用率
      3.检测硬盘使用率
      主体程序已经完成,将这个放在计划任务中每小时执行一次。
      有待完成
      1.检测SQL是否正常
      2.将检测的数据回传
      3.将系统日志回传
      4.提醒每天是否有回传(用于检测软件是否正常运行)
      5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh
While $a<=21
      $rCPU = CurrentCPURate()
$rRAM = round (CurrentRAMRate()/1024,2)&"M"
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用", $sxdx,$rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "可用物理内存", $sxdx,$rRAM)
      $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh,$rCPUzh&$rCPUzh&$rCPUzh&$rCPUzh)
Func CurrentCPURate()
      $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
      $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
      For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
      Next
      Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
      Local $Array
      $Array = MemGetStats()
      Return $Array
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
      For $i = 1 To $cppf
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "\")            
                $kykj = round(DriveSpaceFree($pf & "\")/1024,2)&"G"
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", $pf&"盘剩余空间" , $sxdx,$kykj)
      Next
      EndIf
      EndFunc   ;==>CurrentRAMRate

afan 发表于 2009-12-21 19:02:26

解决了

是变量错了
ac5474012 发表于 2009-12-21 17:13 http://www.autoitx.com/images/common/back.gif


    解决了记得修改标题分类~

ac5474012 发表于 2009-12-22 09:45:25

...我今天想改的,版主好敏捷!
页: [1]
查看完整版本: 如何将循环中得到的值,加入数组?