Posted to tcl by mookie at Fri Sep 20 00:00:45 GMT 2024view pretty
if I am to read a line from text file, I encounter the issue where it seems to detect % at range positions where, it doesn't exist...
ranges 23 25 27 29 don't hold the value % and so shouldn't trigger my switch case
<legend>%_frame_title_%</legend>
I can add a break clause, which I ultimately need to do, but still confusing to why is this switch triggering.
mookie@cuddles:~/~scrap/~tcl $ tclsh hexScope.ix
my line in base16: 3c6c6567656e643e255f6672616d655f7469746c655f253c2f6c6567656e643e
my line in base32: <legend>%_frame_title_%</legend>
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
I found my % @ 8
String is: %_frame_title_%</legend>
Now lets see if the next character to see if it has _
found _
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
nothing found
I found my % @ 22
String is: %</legend>
Now lets see if the next character to see if it has _
_ not found
What about my previous character, was that a _?
indeed my previous character is a _ @ 21
nothing found
I found my % @ 24
String is: /legend>
Now lets see if the next character to see if it has _
_ not found
What about my previous character, was that a _?
indeed my previous character is a _ @ 23
nothing found
I found my % @ 26
String is: egend>
Now lets see if the next character to see if it has _
_ not found
What about my previous character, was that a _?
indeed my previous character is a _ @ 25
nothing found
I found my % @ 28
String is: end>
Now lets see if the next character to see if it has _
_ not found
What about my previous character, was that a _?
indeed my previous character is a _ @ 27
nothing found
I found my % @ 30
String is: d>
Now lets see if the next character to see if it has _
_ not found
What about my previous character, was that a _?
indeed my previous character is a _ @ 29
nothing found
>> 8 21 23 25 27 29
###### CODE #######
# set myFile [open $base32_myFile]
# set myFile [open "./timezone.craft"]
# set lines [split [read $myFile] "\n"]
# close $myFile
set lines "<legend>%_frame_title_%</legend>"
foreach line $lines {
set x_pos 0
set y_pos 1
set z_pos 2
set a_pos 3
set list ""
set located 0
set i 0
set string_length [string length $line]
puts "\n"
puts "my line in base16: [binary encode hex $line]"
puts "my line in base32: $line "
for {set z 0} {$z < $string_length} {incr z} {
switch [binary encode hex [string range $line $x_pos $x_pos]] {
25 { puts "I found my % @ $z"
switch $located {
0 {
lappend list $z
}
}
puts "String is: [string range $line $z end]"
puts "Now lets see if the next character to see if it has _"
incr i
switch [binary encode hex [string range $line $y_pos $y_pos]] {
5f {
puts "found _ "
incr x_pos
incr y_pos
}
default {
puts "_ not found"
puts "What about my previous character, was that a _?"
incr x_pos -1
switch [binary encode hex [string range $line $x_pos $x_pos]] {
5f {
puts "indeed my previous character is a _ @ [expr $z-1]"
lappend list [expr $z-1] ;# append the previous position
}
default {
puts "it was not"
incr x_pos 2
break
}
} ;# end switch
}
} ;# end switch
}
default {
puts "nothing found"
incr x_pos
incr y_pos
}
} ;# end switch
incr i
switch [string range $line $x_pos $y_pos] { "" { break } }
}
puts ">> $list"
} ;# end foreach
Comments
Posted by mookie at Fri Sep 20 00:22:12 GMT 2024 [text] [code]
Replace: switch [binary encode hex [string range $line $x_pos $x_pos]] { 5f { puts "indeed my previous character is a _ @ [expr $z-1]" lappend list [expr $z-1] } default { puts "it was not" break } with switch [binary encode hex [string range $line $y_pos $y_pos]] { 5f { puts "indeed my previous character is a _ @ [expr $z-1]" lappend list [expr $z-1] } default { puts "it was not" break } As I was subtracting $x_pos by minus one, it would than hunt backwards, find the same result, than loop.. strange.