Here is attached debug output with {$DEFINE DSDebug}.
It seems, that exception is related to Append/Insert (it does not depend
if dataset is empty before or not) followed by accesing OldValue
...
Setting current record to0
Post: Browse mode set
Active buffer requested. Returning:0
exception at 0045C732:
Access violation.
SetBufListSize: -1
Freeing buffers :11
SetBufListSize: Final FBufferCount=-1
L.
TFieldDef.Create : int_field(1)
TFieldDef.Create : str_field(2)
Creating fields
Count : 2
Def 0 : int_field(1)
Def 1 : str_field(2)
About to create fieldint_field
Creating field int_field
TFieldDef.CReateField : Trying to set dataset
TFieldDef.CReateField : Result Fieldno : 1 Self : 1
Setting dataset
About to create fieldstr_field
Creating field str_field
TFieldDef.CReateField : Trying to set dataset
TFieldDef.CReateField : Result Fieldno : 2 Self : 2
Setting dataset
Found field int_field
Calling internal open
Calling RecalcBufListSize
Recalculating buffer list size - check cursor
Recalculating buffer list size
Setting buffer list size
SetBufListSize: 10
Reallocating memory :44
Filling memory :48
Filled memory :
Assigning buffers :40
Assigned buffers 0 :40
SetBufListSize: Final FBufferCount=10
Getting next buffers
Getting next record(s), need :10
Getting next record. Internal RecordCount : 0
Result getting next record : TRUE
Getting next record. Internal RecordCount : 1
Result getting next record : FALSE
Result Getting next record(S), GOT :1
Getting previous record(s), need :10
GetPriorRecord: Getting previous record
Setting current record to0
Result getting prior record : FALSE
SetBufferCount: FActiveRecord=0 FCurrentRecord=-1 FBufferCount= 10
FRecordCount=1
going to insert mode
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Done with append
Active buffer requested. Returning:0
Active buffer requested. Returning:0
1. Field.OnValidate: OldValue=O; Value=O; NewValue=O
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
2. Field.OnChange: OldValue=null; Value=O; NewValue=O
Post: checking required fields
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
3. BeforePost: OldValue=null; Value=O; NewValue=O
Trying to do
Trying : updatecursorpos
Setting current record to0
Trying to do it
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Active buffer requested. Returning:0
Post: Internalpost succeeded
Resync called
Getting next record(s), need :10
Getting next record. Internal RecordCount : 1
Result getting next record : TRUE
Getting next record. Internal RecordCount : 2
Result getting next record : FALSE
Result Getting next record(S), GOT :1
Getting previous record(s), need :10
GetPriorRecord: Getting previous record
Setting current record to0
Result getting prior record : FALSE
Setting current record to0
Post: Browse mode set
Active buffer requested. Returning:0
exception at 0045C732:
Access violation.
SetBufListSize: -1
Freeing buffers :11
SetBufListSize: Final FBufferCount=-1
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel