Mattias Gaertner <nc-gaert...@netcologne.de> hat am 25. Januar 2013 um 10:52 geschrieben: > > Michael Schnell <mschn...@lumino.de> hat am 25. Januar 2013 um 10:35 > geschrieben: > > > On 01/23/2013 12:54 AM, vrt277 wrote: > > > > > > Hi FPC team, > > > > > > There is good proposed extension of for-in loop on fpc wiki: get > > > enumerator Position if available > > > <http://wiki.freepascal.org/for-in_loop#Proposed_extensions> . From my > > > point > > > of view it's essential part of iterators. E specially for data structures > > > which store pairs of key and value associated with key. > > The above UTF8 example misses some points. Often you need the index and often > you need the byte position. > This can be remedied with an enumerator using a record: > > type > TUTF8Enummy = record > c: UTF8Char; > ByteIndex: SizeInt; > UTF8Index: SizeInt; > end; > > TUTF8StringEnumerator = class > ... > public > constructor Create(const A: UTF8String); > function Current: TUTF8Enummy; > function MoveNext: Boolean; > end; > ... > > var > s: UTF8String; ch: TUTF8Enummy; > begin > for ch in s do > Writeln(ch.UTF8Index, ': ', ch.c,' at byte ',ch.ByteIndex); > end. > > The compiler already supports such constructs. > It seems this is even more powerful and useful than the proposed 'index' > extension.
Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel