2014-07-20 2 views
0

Tcl/Tk에서 작성하는 프로그램에서 "찾기"기능을 구현하는 중이고이 코드를 작성하는 데 간결하고 효율적인 방법을 찾기 위해 애 쓰고 있습니다. 검색은 정확한 ""모두 찾기 "와 같은 다른 옵션이"와 "텍스트 검색 명령에 매개 변수를 제공하는 간결한 방법은 무엇입니까? (Tcl/Tk)

여기

내가 무엇을 시도했다입니다/다운"등 최대 검색 내가 좀 여기에 갈거야 어떤 것

set idx [.text index insert]; 
set search_for $::search_entry; 

set parameters ""; 
if {$::match_exact == 1} {append parameters "-exact "}; 
if {$::case_sensitive == 0} {append parameters "-nocase "}; 
if {$::find_all == 1} {append parameters "-all "}; 
if {$::direction == 1} { 
    append parameters "-backwards"; 
} else { 
    append parameters "-forewards"; 
} 

.text search $parameters $search_for $idx; 

bad switch "-nocase -forewards": must be --, -all, -backwards, -count, -elide, -exact, -forwards, -nocase, -nolinestop, -overlap, -regexp, or -strictlimits 

이 쓸 수있는 유사 간결한 방법이 알려주십시오 : 나는 검색하려고 할 때 다음과 같은 오류를 얻을이와

? 나는 사용자가 설정 한 옵션의 각 조합에 대해 서로 다른 검색을 만들어야 할 것이라고 걱정합니다 ...

답변

2

매개 변수를 문자열로 정의하고 있습니다. 검색 명령을 호출 할 때 확장 할 목록이어야합니다. 그러면 다음과 같이 보일 것입니다 :

set parameters [list] 
if {$::match_exact == 1} {lappend parameters "-exact"} 
... 
.text search {*}$parameters $search_for $idx 
+0

아, 나는 그렇게 생각했습니다. 귀하의 빠른 응답에 감사드립니다! – Grandclosing