Текущий архив: 2002.12.26;
Скачать: CL | DM;
Вниз---|Ветка была без названия|--- Найти похожие ветки
← →
Дмитрий К.К. (2002-12-05 12:33) [0]В одном приложении я пользуюсь таблицей в памяти TkbmMemTable. Бывают такие ситуации, что структура таблицы меняется (от версии к версии) и новая оболочка при загрузке старого формата дает ошибку:
kbmMemTable1 := TkbmMemTable.Create(Self);
kbmMemTable1.FieldDefs.Clear;
kbmMemTable1.FieldDefs.Add("ID", ftSmallint, 0, False);
kbmMemTable1.FieldDefs.Add("Name", ftBlob, 0, False);
kbmMemTable1.FieldDefs.Add("NewField", ftSmallint, 0, False);
kbmMemTable1.CreateTable;
kbmMemTable1.Open;
kbmMemTable1.LoadFromBinaryFile("test.bin");
Ошибка - "Invalid property value"
Как исправить положение?
Спасибо.
← →
Дмитрий К.К. (2002-12-05 15:07) [1]Up!
← →
Дмитрий К.К. (2002-12-06 06:46) [2]Мдя...
← →
ЮЮ (2002-12-06 07:28) [3]А без FieldDefs нельзя? Неужели в BinaryFile не хранится структура?
← →
Max Zyuzin (2002-12-06 09:02) [4]В каком месте ругается? При создании при открытии или при загрузке? Кстати объясните мне непонятливому, что именно делает строка
kbmMemTable1.LoadFromBinaryFile("test.bin");
← →
Дмитрий К.К. (2002-12-06 09:10) [5]
> Max Zyuzin © (06.12.02 09:02)
> В каком месте ругается? При создании при открытии или при
> загрузке? Кстати объясните мне непонятливому, что именно
> делает строка
> kbmMemTable1.LoadFromBinaryFile("test.bin");
Подразумевается, что ответы будут давать люди ПОНЯТЛИВЫЕ.
← →
Max Zyuzin (2002-12-06 09:12) [6]Ахх.. ну извините что потревожил...
← →
DarkGreen (2002-12-06 09:37) [7]Попробуй поменять имя поля "NewField" на другое
← →
Sergey13 (2002-12-06 10:11) [8]2Дмитрий К.К. © (05.12.02 12:33)
>В одном приложении я пользуюсь таблицей в памяти TkbmMemTable. Бывают такие ситуации, что структура таблицы меняется (от версии к версии) и новая оболочка при загрузке старого формата дает ошибку:
------------------
Не очень понятна проблема. Я вот работаю с обычными таблицами в базе (иногда использую RxMemoryData) и при изменении структуры таблиц вынужден менять код программы которая с ними работает. Чего тут необычного то - нормальная работа. Все так делают. Невозможно, ИМХО, написать узко специализированную программу с приличным интерфейсом на произвольную структуру.
← →
ald (2002-12-06 10:31) [9]А не этот ли здесь случай, когда при изменившейся структуре таблицы ты впихиваешь данные уже неверного формата(.bin - предполагается, что в нём привязки к именам полей нет - всё одним потоком забирается. Так?). На первой же записи у тебя пойдёт смещение на размер новых полей. А что к концу загрузки будет? Смущают только слова "бывают ситуации". Мне кажется, что в такой ситуации, загрузка должна обламываться всегда.
← →
Дмитрий К.К. (2002-12-06 10:35) [10]2ald
Совершенно верно, идет смещение!
"Бывают ситуации" относится не к тому, что вываливается ошибка, а к тому, меняется структура. Как только меняется - тут же ошибка.
Но как бороться с ней?
← →
Sergey13 (2002-12-06 11:07) [11]2Дмитрий К.К. © (06.12.02 10:35)
>Как только меняется - тут же ошибка.
Вот ведь сволочь, нет бы недельку еще поработала.8-)
Тогда, ИМХО, только предварительный анализ твоего бинарника тебе поможет.
← →
Дмитрий К.К. (2002-12-06 11:47) [12]
> Sergey13 © (06.12.02 11:07)
> 2Дмитрий К.К. © (06.12.02 10:35)
> Тогда, ИМХО, только предварительный анализ твоего бинарника
> тебе поможет.
И с етим полностью согласен... но как сие осуществить?
← →
ЮЮ (2002-12-06 12:02) [13]Посмотреть код методов LoadFromBinaryFile, SaveToBinaryFile для начала
← →
Дмитрий К.К. (2002-12-06 12:33) [14]Пожалуй, задам вопрос на форуме разработчика TkbmMemTable.
Всем спасибо за помощь.
Страницы: 1 вся ветка
Текущий архив: 2002.12.26;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.008 c