сложно с получением значения поля. Я думал, оно на базе Variant, а там какой-то треш с указателями на буфера с непонятно чем. То есть для каждой строки таблицы надо выделять буфер и в него копировать значения полей в Native формате, ну то есть System.Move(Value, Buffer, SizeOf(Value))? Плюс отдельные приседания для строк, массивов и блобов? Может есть какой-то мануал на эту тему?
Была серия статей какой-то англичанки, но с ней как водится ращосрались, и она снесла. В общем, смотри как сделано в tdbf, vdbf и так далее И разумеется там не сделано через вариант, с фига ли? Какой например вариант в формате dbf, который был раньше, чем visual basic?
Там вообще все сложно и через жопу. Видимо, так исторически сложилось еще в турбопаскале, и вместо того, чтобы сделать простого предка в стиле TStrings, навалили контента сверху в виде династий TField и TFieldDef и еще тонны всякого.
Ну в общем-то да, делали обертку поверх BDE. А уж потом туда начали всего подряд всовывать, и SQL проиивоестественно впизнули, и все остальное. Что выросло, то выросло.
Было время, разбирался. Ощущения были отвратительные. Это монстр, состоящий из кучи костылей, которые кое как волшебным образом заставили работать. Ничего не понятно. Дни напролет сидел под отладчиком. Нужно сразу схемы рисовать, как только становится понятно что делает тот или иной метод.
...потом выйдет новая версия, в которой всунут ещё одну фишку, которую реализуют еще десятком костылей, и начинай с начала...
Стикер
TField это по сути TStream, обёртка над буфером для чтения-записи значений разных типов (Integer, Real, String..). Но в виде компонента (можно кидать на форму) и со своими тараканами. А TFieldDef вообще непонятно что и зачем.
насколько я понимаю, чтобы можно было СОЗДАТЬ таблицу и поля
Обсуждают сегодня