2013-07-25 57 views
0

嗨我想下面的代碼,但我得到一個錯誤。它是我給出參考價值的程序,程序應該在列表中上下移動。 的代碼是:在循環tcl問題

proc getvalue {reference direction} { 
    if {[regexp {(.*)(x.*$)} $reference cellname family string]} { 
     puts $family 
     puts $string 
    } else { 
     puts " No string matched" 
    } 
    set mylist [T_sel2list [get_lib_cells "*/*${family}*"] ] 
    set sorted_finallist [lsort $mylist] 
    set i [lsearch $sorted_finallist *$string ] 
    if {$direction == "DOWN"} { 
     if {$direction == "DOWN" && $i > 0} { 
      incr i -1 
      set requiredDOWN [lindex $sorted_finallist $i] 
      puts "$requiredDOWN" 
     } else { 
      puts "First in the line" 
     } else {$direction == "UP" && $i >= 0 && $i < [llength $sorted_finallist] -2} { 
      incr i 
      set requiredUP [lindex $sorted_finallist $i] 
      puts "$requiredUP" 
     } else { 
      puts "Last in the line" 
     } 
    } 
} 

我收到一個錯誤說: 錯誤:錯誤#ARGS:後多餘的話「其他」中的「如果」命令 使用ERROR_INFO更多信息條款。 (CMD-013) 我不知道for循環出了什麼問題。有人可以幫助我這個。

+2

那麼,你可能想用'elseif'替換一些'else'。 –

+0

我把所有的else都改成了elseif,除了最後一個,並且錯誤信息沒有出現。該過程對於** DOWN **選項正常工作,但對於** UP **選項,它不顯示任何輸出,也不顯示錯誤消息。 for循環未進入該行:**} else {$ direction ==「UP」&& $ i> = 0 && $ i <[llength $ sorted_finallist] -2} {** – user2533429

+0

這是因爲您只輸入那些' if'子句如果'$ direction'是'DOWN',否? –

回答

1

這是你的意思嗎?

if {$direction == "DOWN"} { 
    if {$direction == "DOWN" && $i > 0} { 
     incr i -1 
     set requiredDOWN [lindex $sorted_finallist $i] 
     puts "$requiredDOWN" 
    } else { 
     puts "First in the line" 
    } 
} else { 
    if {$direction == "UP" && $i >= 0 && $i < [llength $sorted_finallist] - 2} { 
     incr i 
     set requiredUP [lindex $sorted_finallist $i] 
     puts "$requiredUP" 
    } else { 
     puts "Last in the line" 
    } 
}