Amorf писал(а):спасибо, но мне не понять как я могу использовать это из программы. можно подробнее? про вот эти целые числа.
Целые числа не используются никак, кроме того, что являются лишь синтаксическим способом задать запись с вариантами. На самом деле, вне зависимости от того, есть поле селектора или нет, это касается только программиста, но не компилятора и генерируемого им кода. Если v._variant равен pole, но несмотря на это используется обращение к полям иного варианта, например, tablica (v._t.dlina или v.TableLength), то такой код будет и скомпилирован, и выполнен без предупреждений, контроль правильной интерпретации данных целиком на плечах программиста.
Amorf писал(а):кроме того вы сделали поле размер обязательным даже для ячейки, а она и так является самым большим элементом, которому нужен только индекс
На данном этапе мне не известны варианты предполагаемого применения (кроме того, что речь о БД), поэтому пример касался только синтаксиса. Но если интересно мое мнение, прежде чем писать свою СУБД, посмотрите на что-нибудь существующее, например на тот же формат DBF. По пробуйте корректно реализовать основные операции: чтение/добавление/удаление/вставку/упаковку, затем индексы. Этот путь многие уже проходили не единожды, основные преимущества/недостатки разных подходов давно известны. Имея подобный опыт, можно будет попытаться сделать что-то принципиально отличающееся. Могу ошибаться, но ваш тип данных пока представляется жутко неоптимальным как с точки зрения дискового хранения, чтения/записи, так и хранения в памяти.