I replaced the code in the original function with this code and it won’t 
compile. 

Do you mind posting the full working function again? 

Bob S


> On Jul 27, 2023, at 2:06 PM, Mark Waddingham via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Oh those pesky chunks which don’t ‘cover’ the target string (which is 
> actually all of them except codeunit/point/char come to think of it). I 
> should have run through a few more examples in my head before posting….
> 
> Alternative attempt:
> 
> Put null into word N to -1 of S
> Delete codeunit (codeunitoffset(null, S) to -1 of S
> Return the number of chars in S + 1
> 
> The problem before was the chars which do not form part of the last chunk and 
> remain after deletion.
> 
> The above puts in a sentinel char which can be searched for to find where the 
> requested chunk started.
> 
> Second time lucky? ;)
> 
> Mark.
> 
> Sent from my iPhone
> 
>> On 27 Jul 2023, at 21:23, Paul Dupuis via use-livecode 
>> <use-livecode@lists.runrev.com> wrote:
>> 
>> On 7/27/2023 4:31 AM, Mark Waddingham via use-livecode wrote:
>>>> On 2023-07-26 18:02, Paul Dupuis via use-livecode wrote:
>>>> If I have some text in a field, I can use the "charIndex" property (see 
>>>> Dictionary) to obtain teh character position of the first character of a 
>>>> chunk.
>>>> 
>>>> Does anyone know of a clever way to do the equivalent of the charIndex for 
>>>> an arbitrary chunk expression for a container/variable (i.e. not an actual 
>>>> field object)?
>>> 
>>> This should work I think:
>>> 
>>>   function charIndexOfWord pWordIndex, pTarget
>>>      delete word pWordIndex to -1 of pTarget
>>>      return the number of characters in pTarget + 1
>>>   end charIndexOfWord
>>> 
>>> Deletion of chunks works from the first char that makes up the computed 
>>> range, so you are left with all the characters which sit before it.
>>> 
>>> The index of the character immediately before the start of the specified 
>>> word is the just the number of characters which sit before it; and so the 
>>> index of the first char of the specified word (which is what charIndex 
>>> gives you in a field) is that +1.
>>> 
>>> The above should work for both +ve and -ve indices, and the obvious changes 
>>> will make it work for other string chunks (i.e. change 'Word' for <chunk>).
>>> 
>> 
>> Mark,
>> 
>> Thank you very much. This was a brilliant approach and I should have thought 
>> of it myself. However, it is not quite an accurate substitute for the 
>> charIndex property of a field. The following example illustrates the issue:
>> 
>> pTarget is [The quick brown fox jumps over the lazy dog. The lazy dog was 
>> named "Oz".]
>> pWordIndex is 8 (having been derived from searching for 'lazy', the 8th word)
>> 
>> Using [] to quote strings.
>> delete word 8 to -1 of pTarget -- deletes [lazy] to ["Oz"] but not the 
>> period (.) at the end since it is not considered part of word -1.
>> This leaves pTarget as [The quick brown fox jumps over the .]
>> The number of characters in pTarget + 1 is actually not the position of the 
>> [l] in [lazy], which is character 36, but the [a] in [azy], character 37, 
>> due to the period being left.
>> 
>> There are some similar issues, being off by  or more, with sentences and 
>> paragraphs in longer text.
>> 
>> Thank you very much for chiming in with a good direction to try.
>> 
>> Paul Dupuis
>> Researchware
>> 
>> 
>> _______________________________________________
>> 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
> 
> 
> _______________________________________________
> 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

_______________________________________________
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