Foxpro goto command and deleted records

Ethan Furman ethan at stoneleaf.us
Tue Jul 17 22:19:26 EDT 2012


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.

~Ethan~



More information about the Python-list mailing list