Хз, я с непакованными массивами никогда не встречался ни в одном языке
а о чем тут речь? Раз есть пакованные, значит их упаковали из распакованных? ))
Других просто нет, они так устроены что не могут быть непакованными
вроде как сейчас это только для массивов extended в 32bit на что-то влияет
Может если это массив рекордов, то они будут пакованными
Не, это будет пакованый массив непакованых рекордов
А мне всегда смущала packed в Record. Одно время они были объявлены сильно deprecated. Не заметил, когда их/его реабилитировали.
Когда они были deprecated?? Они обязаны быть пакованными при меж модульном общении
Нифига се.. может ты ещё и песню Тополиный пух знаешь
Моя первая программа на Pascal была на TP3 на Yamaha MSX
А сейчас на чем пишешь?
Что-то не разу не видел, чтобы оно было deprecated А как иначе сделать упакованную запись?
Delphi, C, (Kotlin, Go)(но это без продакшена), SQL, PLSQL, PSQL. Все что руками трогал в продакшене, на экран не влезет.
А зачем? Там конфликт между менеджером памяти и программистом. ты мог писать packed, но оно ни на что не влияло.
Ну, как не влияло? Можно было описать заголовок формата какого-то, например, bmp и читать прямо запись из файла. Все смещения были корректны
Вообще не было такого вопроса. Вот за все время работы с прямыми доступами к памяти, перекрыванием окон, с загрузкой картинок в графическом режиме. Не помню я тогда такого. Ну или забыл уже.
А вона че. Там(TP4+(?)) появился флаг на выравние слов в памяти. А packed как раз влиял на выравнивание. Но это жутко устарело. И сейчас надо это(знания) обновлять.
Интересно, а как без packed жить собирались?
Мне интересно другой - как можно объявить массиб без packed?
Не указывать это слово просто при объявлении А вот как добиться и на какой архитектуре ЦПУ/Памяти/ОС/от чего там оно может теоретически зависеть чтобы элементы располагались по не выровненным адресам - не знаю Может тут имеется ввиду, что начало массива будет (или может быть) по не выровненному адресу и соответственно все элементы массива тоже будут иметь начало по не выровненному адресу
наоборот - по выровненным, т.е. как я это вижу, например идем массив рекордов вида TTest = packed record A: Byte; B: Word; end; Размер структуры 3 байта, сейчас массив из трех элементов будет занимать 9 байт. А вот что будет если он будет не пакованный при выравнивании 1 = 9 байт при выравнивании 2 и 4 = 12 байт при выравнивании 8 = 24 байта при выравнивании 16 = 48 байт причем тот кто будет читать такой массив должен тоже учитывать что его формировал не стандартный код.
А я думал, по умолчанию всегда packed. Не?
я не знаю, зачем тогда это слово есть? можно с ним, а можно и без него возможно что всегда, но я не знаю за все возможные варианты, поэтому сомнения есть
Я по ходу, не правильно думал... https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Structured_Types_(Delphi)
Обсуждают сегодня