I was wondering if this should be the value used for a NULL.No, NULL is not stored as an encoded data value but in a special location in the dataset data buffer outside the data value bytes.
Is there a better DataSet component / library for manipulating FoxPro databases?I don't know. But during my work at MyDbfStudio (https://github.com/wp-xyz/MyDBFStudio) I learned that the fpc version of TDbf is a fork of https://sourceforge.net/p/tdbf/code/HEAD/tree/. Both versions have diverged to some degree, and both do get some changes occasionally. So, there is some chance that the sourceforce TDbf can handle FoxPro files better - just a wild guess... I would recommend that you test this version of the component. But be aware that keeping two equally named packages within an installation calls for trouble; therefore, I would not install the source forge version, but - against all rules - add the path the its sources to the search path of your project. Create the TDbf component at runtime and remove the TDbf package from your program requirements. Then you can test the sourceforge version of TDbf. Of course these are very massive changes to your project, and it is absolutely necessary that you conserve the previous state in a backup.
I don't know. But during my work at MyDbfStudio (https://github.com/wp-xyz/MyDBFStudio) I learned that the fpc version of TDbf is a fork of https://sourceforge.net/p/tdbf/code/HEAD/tree/
But:This means that the field is 8 bytes long and has a precision of 4 decimal places. I am not sure what the number of decimal places means, it may be for formatting purposes.
If we assume that this is Foxpro the "TESTFLOAT" with definition "B" has a hexvalue of
$ 08 00 04 00
If you move this value into a double it results in
6.6....E-316
which might be a "special kind of zero"
In XBase++, if you specify the precision of a float ("F"), it gives an error message. Floats always seem to be 8 bytes as well. It's just a double.