There are only a few instances in Xojo where things are 1 based rather than zero. FolderItem.Item and Recordset.idxField are the two that consistently bite developers. I’m sure there are others but those are the most common, IMO.
[Hobby-horse warning] Well For...Next (which I don’t like anyway) seems premised on 1-based in relation to Count properties, otherwise it will have to be Count-1 all the time. Another good reason to avoid For...Next.
If I could wish one change into Xojo’s history it would be this:
0-based across the entire framework.
Optional named 1-based variants.
Optional compiler warning regarding said 1-based variants.
So RecordSet.IdxField and RecordSet.IdxFieldOne (or IdxFieldBaseOne or something). That would allow you to port code from older basic systems (i.e. VB) using a simple find/replace but leaving you with a clear delineation as to old 1-based code that should be updated/made consistent.
For loops have stepping in reverse ect. so ubound doesn’t always work. Trouble with my code is Pop is LIFO whereas arrays are often used in FIFO situations.