Foxpro goto command and deleted records

Ethan Furman ethan at stoneleaf.us
Tue Jul 17 23:11:48 EDT 2012


MRAB wrote:
> On 18/07/2012 03:19, Ethan Furman wrote:
>> MRAB wrote:
>>> On 17/07/2012 23:57, Ethan Furman wrote:
>>>> In Foxpro if you do a
>>>>
>>>> GOTO 7
>>>>
>>>> with deleted off and record 7 is deleted, the record pointer doesn't
>>>> move (at least in version 6).
>>>>
>>>> I don't like that.
>>>>
>>>> I see four other options:
>>>>
>>>> 0) don't move the pointer (listed for completeness)
>>>> 1) go to that record anyway
>>>> 2) go to the next undeleted record
>>>> 3) go to the seventh undeleted record (possibly the least practical)
>>>> 4) raise an exception
>>>>
>>>> Any opinions?
>>>>
>>> What happens when you 'delete' a record? Does it disappear immediately,
>>> or is it merely marked for deletion?
>>
>> Marked for deletion.
>>
>>> If it is marked for deletion, can it be unmarked? Will a marked record
>>> be removed when the file is closed, or does the file need to be
>>> explicitly purged/compacted?
>>
>> Yes, it can be unmarked.  No, the table must be explicitly packed.
>>
>>> If it is merely marked, then I think the best option is 1, or possibly
>>> 4 if the file is compacted when closed.
>>
>> There is a use_deleted setting that controls whether deleted records are
>> accessed or skipped.  Skipping is fine when looping, not so fine when
>> going directly to a particular record.
>>
> If use_deleted is false, does that mean that deleted records are
> hidden, or just that when iterating through the records the deleted
> ones aren't yielded?

Definitely the latter, but I'm starting to wonder if the former should 
also be the case.

~Ethan~



More information about the Python-list mailing list