fancky 发表于 2009-3-11 13:49:19

請教字符串比較的問題

我的程式是這樣的,首先由$AddDate的陣列會先給出特定的四個日期,分別是2005/5/9、2005/5/16、2005/5/23、2005/5/30,然後將$AddDate與$AddArray做比較,如果有相同的日期出現,則分別將該相同的日期與該數值放進另兩個個新的陣列,分別是$NewDate和$NewArray。
那我現在有個想法,因為依照我目前的程式是能夠判定出2005/5/9、2005/5/16、2005/5/30是符合我上述要求的,都有將該日期的數值放進新的陣列,但是這樣2005/5/16就沒有數值了,所以如果說要讓程式判斷當指定的日期沒有數值時,自動使用下一天的數值2005/5/17的數值,那要如何修正呢?
#Include <Array.au3>
#include<date.au3>
Dim $AddDate
Dim $AddArray
Dim $NewArray
Dim $NewDate
Dim $m=0
$AddArray='2005/5/9'
$AddArray='15.6'
$AddArray='2005/5/15'
$AddArray='14.7'
$AddArray='2005/5/17'
$AddArray='13.9'
$AddArray='2005/5/23'
$AddArray='15.2'
$AddArray='2005/5/30'
$AddArray='14.6'

$date1="2005/5/1"
$date2="2005/5/31"
$iDateCalc = _DateDiff( 'd',$date1,$date2)
$j=Floor($iDateCalc/7)
Dim $AddDate[$j+1]
$AddDate=$j

for $i=1 to $j
        $AddDate[$i]= _DateTimeFormat(_DateAdd( 'd',$i*7, "2005/05/02"),2)
        for $j=0 to UBound($AddArray) - 1
                if ($AddDate[$i]==$AddArray[$j]) then   
                        $NewDate[$m]=$AddDate[$i]
                        $NewArray[$m]=$AddArray[$j+1]
                        $m=$m+1
                       
                EndIf


        Next
Next
_ArrayDisplay($AddDate)
_ArrayDisplay($NewDate)
_ArrayDisplay($NewArray)

xayle 发表于 2009-3-12 08:14:06

判断是否为空?
if $AddDate[$i] = "" then
else
endif

fancky 发表于 2009-3-12 09:58:14

問題是$AddDate本來就有資料,並不為空,我附上圖給大家看看:
$AddDate陣列:



$newdate陣列:



$newaway陣列:

現在就是因為5/16日沒有符合,所以$newdate和$newaway都沒有5/16的資料,因此有個想法就是既然這天沒有符合,那麼就自動將這天的數據用下一天的數據代替

[ 本帖最后由 fancky 于 2009-3-12 16:46 编辑 ]

KiwiCsj 发表于 2009-3-12 12:41:31

大概我的理解能力有限,看了很多遍了,怎么还是不明白,为什么2005/5/16你认为是适用的,但是程序为什么又把它剔除了呢?

fancky 发表于 2009-3-12 16:45:18

原帖由 KiwiCsj 于 2009-3-12 12:41 发表 http://www.autoitx.com/images/common/back.gif
大概我的理解能力有限,看了很多遍了,怎么还是不明白,为什么2005/5/16你认为是适用的,但是程序为什么又把它剔除了呢?
那是因為$AddArray裡面沒有2005/5/16但是$AddDate裡面有2005/5/16,因此沒有匹配的,所以會被剔除。
因此我想改善這個部分,以$AddDate裡面的日期為主,就算$AddArray裡面沒有符合2005/5/16,也要將2005/5/17或是2005/5/15的數值給予2005/5/16。這樣應該會比較清楚一點。
页: [1]
查看完整版本: 請教字符串比較的問題