variables within an object are varying

You are printing the values two different ways. In one case, you let Serial.print() decide how to print the value in SdPlay.fileinfo.ActSector. Since ActSector is a uint32_t, or unsigned long, Serial.print() prints the value as an unsigned long.

In the other case, you are using sprintf() to convert the value to a string. But, you are using the %u format specifier, which is NOT the correct specifier for longs. %ul is.