Невозможно ответить на этот вопрос без полного понимания того, как каждая из этих упакованных записей используется в коде вашего приложения. Это то же самое, что спросить «Должен ли я изменить это объявление переменной с Int64 на Byte?»
Не зная, какие значения этой переменной ожидаются и требуются для поддержания ответа, может быть да. Или это может быть нет.
Аналогично в вашем случае. Если запись нуждается в для упаковки, то она должна быть оставлена упакованной. Если его не нужно упаковывать, то не стоит вредить, если его не упаковывать. Если вы не уверены или не можете сказать, тогда самый безопасный способ - оставить их такими, какие они есть.
В качестве руководства для принятия этого решения (если вы решите продолжить), ситуации, когда требуется или рекомендуется упаковка документации, включают:
- постоянство значений записей
- совместное использование значений записей с [потенциально] по-разному скомпилированным кодом
- строгая совместимость с внешними структурами
- сознательно накладывая макет типа на память с разной структурой
Это не обязательно исчерпывающий список, и их объединяет следующее:
- записей, содержащих серию значений в смежных байтах, на которые может и может положиться любой потенциальный производитель или потребитель записи без возможности вмешательства со стороны компилятора или других факторов
Я бы порекомендовал, чтобы (если это возможно и практично) вы определяли, для какой цели используется упаковка в каждом конкретном случае, и добавляете соответствующую документацию к самой декларации записи, чтобы никому в будущем с таким же вопросом не приходилось пройти через этот процесс обнаружения, например:
type
TSomeRecordType = packed record
// This record must be packed as it is used for persistence
..
end;
TSomeExternType = packed record
// This record must be packed as it is required to be compatible
// in memory with an externally defined struct (ref: extern code docs)
..
end;