Краткий способ подачи команды текстового поиска ее параметры? (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
Скажите, пожалуйста, есть ли такой же краткий способ написать это? Я волнуюсь, что мне придется создавать различные поиски для каждой комбинации параметров, установленных пользователем...
1 ответ
Решение
Вы определяете параметры в виде строки. Это должен быть список, который вы расширяете во время вызова команды поиска. Это будет выглядеть примерно так:
set parameters [list]
if {$::match_exact == 1} {lappend parameters "-exact"}
...
.text search {*}$parameters $search_for $idx