I think it's worth pointing pout that the faster operation of repeat for only applies if you're referencing Livecode chunks in the loop. For example, if you have a numerically keyed array, there's nothing wrong with:
put the extents of tArray into tExtents repeat with x= item 1 of tExtents to item 2 of tExtents --do stuff with tArray[x] end repeat ... as an alternative to: put the keys of tArray into tKeys sort tKeys numeric repeat for each line rKey in tKeys --do stuff with tArray[rKey] end repeat There's another situation where I use repeat with even though it's a little slower than repeat for and I also alter the contents of the data I'm repeating through without any problems. repeat with x=the number of lines in tVar down to to 1 if <data condition on line x of tVar> then delete line x of tVar end if end repeat I'm deleting some lines of tVar but because I start at the end of the variable and work backwards, deleting a line doesn't affect whatever data structures LC uses internally to keep track of the earlier lines. You could make changes to line x of tVar too and not have any problems Pete lcSQL Software <http://www.lcsql.com> Home of lcStackBrowser <http://www.lcsql.com/lcstackbrowser.html> and SQLiteAdmin <http://www.lcsql.com/sqliteadmin.html> On Fri, Aug 29, 2014 at 2:58 AM, Beat Cornaz <b.cor...@gmx.net> wrote: > Bob Sneidar wrote : > > > T he reason for all this is that to optimize the repeat loop, the engine > makes one pass through the data, and creates an index of pointers to the > delimiters. If you modify the data, the OS may (and probably will) do some > memory shuffling > and the pointers will no longer be valid. What you > return can be bits and pieces of the original data scrambled like eggs, or > random bits of what is now in that memory space. Ick! > > > > ex. repeat for each line pLine in pData. Don?t alter pLine or pData > inside the repeat control structure. > > I am on digest list form, so there probably have been people before me to > address this. To be sure, here goes : > > I think the first part of what Bob says is true, you cannot alter the > original data. But as you go into each turn of the loop and take rLine > (see) below as a chunck, you can do with rLine whatever you like. I do that > all the time. Only if you change the original data ( e.g. tPermutations) > then the thing fouls. > > As an example : > > on mouseUp > put empty into Changed > > repeat for each line rLine in tPermutations > put 6 into item 3 of rLine -- ** here I change rLine, which > does not affect tPermutations > put rLine & cr after Changed > end repeat > > end mouseUp > > Beat Cornaz > _______________________________________________ > 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