Я использую поле blob в kbmMemTable
, чтобы сохранить пользовательский компонент, который я разработал от TComponent
, и я использую методы потока для чтения и записи для TReader
для чтения и записи компонента в blob поле. Данные в kbmMemTable
в конечном итоге хранятся внутри файла структурированного хранилища, созданного GpStructuredStorage
.Проблема с потоками Delphi
Это работает безупречно, пока я не переместил свой компонент (вместе с kbmMemtable
) в новое приложение и попытался прочитать новое приложение в поле blob. Сначала я получал ошибку именования компонентов (имя компонента уже существует), но позже я начал получать нарушение доступа, когда TReader
пытается прочитать свойство TPersistent
моего компонента.
Насколько я знаю, я ничего не касаемо, как я retrive данные kbmMemTable
из файла gpStructuredStorage
и, как я прочитал компонент обратно из области больших двоичных объектов с помощью TReader
изменить. Я не внес никаких изменений в компонент и, похоже, у меня нет проблем с другими компонентами, которые я храню в других полях blob в одной таблице (по крайней мере, я не получаю никаких ошибок при их чтении назад).
Я удивлен тем, что может быть проблемой. Любая помощь/предложение были бы весьма признательны. Я использую Delphi 2007.
Как насчет форматирования вашего вопроса, чтобы он не являлся стеной текста? Я не склонен пытаться прочитать его в этой форме. –
попытайтесь воспроизвести свою проблему в обоих приложениях, написав свой TPersistent в .dfm-файле, а затем прочитав этот .dfm-файл. Затем уменьшите свою проблему до простейшего TPersistent, который будет воспроизводиться. Затем повторите запрос с образцом кода. –