Olaf Doschke
Programmer
Today I compared some source code folders and compared file pairs via checksums. This reveals changes in class libraries, which surely did not change for years, but the changes merely seem to be due to recompiling, no essential changes. Inside VCX files I found a difference in bytes 3 and 4 only, which store last update time. That even changes, if you just open a class to read source code. Fine, I can cope with that and skip it for a checksum calculation of VCX files.
The differences in VCT files turn out to be spread all over the file, but I found out the differing bytes are mostly (perhaps all) in reserved1 memo fields. They contain a list of include files (.h), though the main include file for any class is stored in reserved8. The reserved1 field just differs in single bytes and I wonder what these bytes mean. It seems they always start with the same include file as given in reserved8, but then add further include files, which are included indirectly via #INCLUDES in the initial include file. I haven't tested yet, if these memo fields are just filled via compilation or build.
My assumptions aside, if anyone can point me to more than the description of the fpt file structure in the VFP help, please post a link. I am specifically interested in the reserved1 memo field meaning of records with platform="COMMENT", not platform="WINDOWS", for the platform="WINDOWS" records reserved1 is "Class" for the main record of a class or empty otherwise, that's uninteresting. The COMMENT record always is the last record of a class and mainly empty aside of the Objname containing the class name and reserved1 some include file info.
FYI: the file size itself doesn't differ a single byte, but in the general case this is not sufficient even considering the vcx file has only changed in bytes 3 and 4. Also a PACK of both library copies didn't change the situation. Actually quite obviously, as the memo contents stay the same, the differing bytes are not in unused fpt (vct) memo blocks.
Bye, Olaf.
The differences in VCT files turn out to be spread all over the file, but I found out the differing bytes are mostly (perhaps all) in reserved1 memo fields. They contain a list of include files (.h), though the main include file for any class is stored in reserved8. The reserved1 field just differs in single bytes and I wonder what these bytes mean. It seems they always start with the same include file as given in reserved8, but then add further include files, which are included indirectly via #INCLUDES in the initial include file. I haven't tested yet, if these memo fields are just filled via compilation or build.
My assumptions aside, if anyone can point me to more than the description of the fpt file structure in the VFP help, please post a link. I am specifically interested in the reserved1 memo field meaning of records with platform="COMMENT", not platform="WINDOWS", for the platform="WINDOWS" records reserved1 is "Class" for the main record of a class or empty otherwise, that's uninteresting. The COMMENT record always is the last record of a class and mainly empty aside of the Objname containing the class name and reserved1 some include file info.
FYI: the file size itself doesn't differ a single byte, but in the general case this is not sufficient even considering the vcx file has only changed in bytes 3 and 4. Also a PACK of both library copies didn't change the situation. Actually quite obviously, as the memo contents stay the same, the differing bytes are not in unused fpt (vct) memo blocks.
Bye, Olaf.