When you need to know, use SizeOf. If you must know before you compile, use a packed record. If you care about the memory size of these records it is probably due to concerns about size constraints, in which case a packed record will guarantee the smallest possible size based on the field types. If that is not what you're concerned about, it's hard to know why you want to "predict" the record size, and so SizeOf is reliable and will suffice for any needs in code (pointer arithmetic, etc.).