LINUX.ORG.RU

TCl/Tk и кавычки


0

0

Читаю данные со стандартного вывода в программе, и вывожу их в таблицу (tk_Table). Если попадается строка типа: ""Central Bank"", то выводится сообщение об ошибке:
Error: list element in quotes followed by "Central" instead of space
вывод получаю след. образом:
#кусок кода
set fileid [open "|$emppath [concat $dbdir$currdb] \"SELECT $attr from $currtable\""]
fconfigure $fileid -translation lf -buffering line
while {[gets $fileid i]>=0} {
if {[set x [llength $i]]>1} {
set j 1
while {$x>$j} {
set i [lreplace $i 0 0 [concat [lindex $i 0] " "]]
set i [lreplace $i 0 0 [concat [lindex $i 0][lindex $i $j]]]
incr j
}
}
.select.frame.tab set row $a,$count $i
incr $a
}
#конец куска кода

Вопрос: как избежать сообщения об ошибке, и добиться нормального вывода строк типа ""Central Bank"???

wish8.3 [~]set h {""AAA"" ""BBB""}
""AAA"" ""BBB""
wish8.3 [~]regsub -all -- {"} $h {\"} k
8
wish8.3 [~]set k
\"\"AAA\"\" \"\"BBB\"\"
wish8.3 [~]subst -nocommands -novariables $k
""AAA"" ""BBB""
wish8.3 [~]lindex $k 0
""AAA""
wish8.3 [~]lindex $k 1
""BBB""
Оно?
Кстати есть хорошая команда foreach - рекомендую

anonymous
()

;) Достаточно split $i { } -- разбивает нормально на список по пробелам, вот только эсли несколько пробелов, будет несколько пустых строк (точнее, несколько-1).

Хотя, право же, стотит задуматься о переработке алгоритма...

С уважением -- Смоляное Чучелко

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.