Repeat for each loop assistance, please.

Igor Couto igor at pixelmedia.com.au
Sat Aug 2 23:33:01 EDT 2003


Hi there, Andy!

On Sunday, August 3, 2003, at 01:56  PM, yoy wrote:

> I have the following loop statement:
>
> repeat for each line gameLine in fld "gamelist"
>
> I need to obtain the line number for the current iteration.

If I understand the docs correctly, the 'repeat for each' form of the 
repeat structure is best used when you need to use *only* the CONTENTS 
of the particular container. If you need to count the loops and refer 
to chunks of the container by number (rather than merely use the 
chunks), then perhaps the "repeat with x = 1 to ..." form would be 
better.

You can still get the CONTENTS when using the 'repeat with x' form:

repeat with x = 1 to the number of lines in field "gameList"
	put the text of line x of field "gameList" into lLineContent
	...
end repeat


> I'm error
> checking for the number of items in gameLine and if it isn't equal to 
> 5, I
> want to raise an answer dialog and stop the script, then hilight that 
> line
> in fld "gameList".

repeat with x = 1 to the number of lines in field "gameList"
	put the text of line x of field "gameList" into lGameLine
	if (the number of items in lGameLine <> 5) then
		put true into lBadItemNumberFlag
		put x into lBadLineNumber
		exit repeat
	end if
	...
end repeat
if (lBadItemNumberFlag) then
	answer lMyUserWarning
	set the hilitedLine of field "gameList" to lBadLineNumber
end if

> The other problem is that the variable might be 6 with the first 5 
> items
> isolated and the 6th item examined under different circumstances, ala
> checking a lotto game with or without a bonus ball number.
>

In this case, the check condition inside the repeat loop might look 
something like:

if (the number of items in lGameLine <> 5) and /
	(the number of item in lGameLine <> 6)
	...
end if
-- so, by the time the execution gets to this line, you know that your 
line MUST have
-- either 5 or 6 items in it. So:
  if (the number of items in lGameLine = 6) then
... -- do whatever stuff is necessary to process the 6th item
end if
-- Next, you process the first 5 items, which are common to both the 5 
and 6-item lines:
... -- do the common stuff here


I hope this helps! There are probably better and more succinct ways to 
do what you want, but I am a newbie, too, so my suggestion is based on 
my limited experience as well!!!

Kind Regards,
--
Igor de Oliveira Couto
----------------------------------
igor at pixelmedia.com.au
----------------------------------




More information about the use-livecode mailing list