Of course *all* three of my suggested approaches are wrong - I messed up the inner loop in each...

On 2020-02-20 07:56, Mark Waddingham via use-livecode wrote:
NON-UNIQUE ANCHORS
repeat with i = 1 to the number of elements in tDataA
  local tRunsA
  put tDataA[i]["runs"] into tRunsA
  repeat with j = 1 to the number of elements in tRunsA
    if tRunsA[j]["metadata"] is tSearchText then
      repeat with m = 1 to j
        add the number of words of tRunsA[m]["text"] to tNumWords
        put true into tFlagExit
        exit repeat
      end repeat
    end if
  end repeat
  if tFlagExit then
    exit repeat
  end if
end repeat
select word tNumWords of line i of field "x"

Should be:

 repeat with i = 1 to the number of elements in tDataA
   local tRunsA
   put tDataA[i]["runs"] into tRunsA
   repeat with j = 1 to the number of elements in tRunsA
     if tRunsA[j]["metadata"] is tSearchText then
       repeat with m = 1 to j
         add the number of words of tRunsA[m]["text"] to tNumWords
       end repeat
       put true into tFlagExit
       exit repeat
     end if
   end repeat
   if tFlagExit then
     exit repeat
   end if
 end repeat
 select word tNumWords of line i of field "x"

UNIQUE ANCHORS

repeat for each key i in tDataA
  local tRunsA
  put tDataA[i]["runs"] into tRunsA
  repeat for each key j in tRunsA
    if tRunsA[j]["metadata"] is tSearchText then
      repeat with m = 1 to j
        add the number of words of tRunsA[m]["text"] to tNumWords
        put true into tFlagExit
        exit repeat
      end repeat
    end if
  end repeat
  if tFlagExit then
    exit repeat
  end if
end repeat
select word tNumWords of line i of field "x"

Should be:

 repeat for each key i in tDataA
   local tRunsA
   put tDataA[i]["runs"] into tRunsA
   repeat for each key j in tRunsA
     if tRunsA[j]["metadata"] is tSearchText then
       repeat with m = 1 to j
         add the number of words of tRunsA[m]["text"] to tNumWords
       end repeat
       put true into tFlagExit
       exit repeat
     end if
   end repeat
   if tFlagExit then
     exit repeat
   end if
 end repeat
 select word tNumWords of line i of field "x"

RUN WITH METADATA DEFINES SELECTION - NON-UNIQUE SEARCH

repeat with i = 1 to the number of elements in tDataA
  local tRunsA
  put tDataA[i]["runs"] into tRunsA
  repeat with j = 1 to the number of elements in tRunsA
    local tRunA
    put tRunsA[j] into tRunA
    if tRunA["metadata"] is tSearchText then
      repeat with m = 1 to j - 1
add the number of codeunits of tRunsA[m]["text"] to tNumCodeunitsBefore
        put the number of codeunits in tRunA["text"] into tNumCodeunits
        put true into tFlagExit
        exit repeat
      end repeat
    end if
  end repeat
  if tFlagExit then
    exit repeat
  end if
end repeat
select codeunit tNumCodeunitsBefore to tNumCodeunitsBefore +
tNumCodeunits - 1 of line i of field "x"

Should be:

 repeat with i = 1 to the number of elements in tDataA
   local tRunsA
   put tDataA[i]["runs"] into tRunsA
   repeat with j = 1 to the number of elements in tRunsA
     local tRunA
     put tRunsA[j] into tRunA
     if tRunA["metadata"] is tSearchText then
       repeat with m = 1 to j - 1
add the number of codeunits of tRunsA[m]["text"] to tNumCodeunitsBefore
       end repeat
       put the number of codeunits in tRunA["text"] into tNumCodeunits
       put true into tFlagExit
       exit repeat
     end if
   end repeat
   if tFlagExit then
     exit repeat
   end if
 end repeat
select codeunit tNumCodeunitsBefore to tNumCodeunitsBefore + tNumCodeunits - 1 of line i of field "x"

Oops!

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to