2013-07-25 3 views
0

안녕하세요, 다음 코드를 시도하고 있지만 오류가 발생합니다. 내가 참조 값을주고 절차가 목록을 위 또는 아래로 움직여야하는 선례. 코드는 다음과 같습니다tcl에서 for 루프 문제가 발생했습니다.

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" 
     } 
    } 
} 

내가 오류 말하는 점점 오전 : 오류 : 잘못된 #의 인수 : 여분의 단어 추가 정보를 원하시면 "만약"명령 사용 error_info에서 "다른"절 후. (CMD-013) for 루프에 무엇이 잘못되었는지 알지 못합니다. 누군가 나를 도와주세요.

+2

글쎄, 당신은 아마도'else'를'elseif'로 대체하려고합니다. –

+0

마지막 else를 제외한 else를 elseif로 변경했으며 오류 메시지가 표시되지 않습니다. 프로 시저가 ** DOWN ** 옵션에서 제대로 작동하지만 ** UP ** 옵션에서는 출력이 표시되지 않고 오류 메시지도 표시되지 않습니다. for 루프는 라인에 들어 가지 않습니다 : **} else {$ direction == "UP"&& $ i> = 0 && $ i <[llength $ sorted_finallist] -2} {** – user2533429

+0

그 이유는' 만약'$ direction'이'DOWN'이라면 if' 절을, 안되면? –

답변

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" 
    } 
} 
관련 문제