Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.01 c
8-86042
none
2002-09-01 16:08
2002.12.26
DirectX


3-85808
sasha123
2002-12-06 10:23
2002.12.26
Как связать горизонтальную прокрутку в DBGrid c HeaderControl


6-86053
olphi
2002-10-27 13:34
2002.12.26
Как узнать трафик сессии (инета) после её завершения?


4-86212
vidiv
2002-10-08 09:27
2002.12.26
Прекрывание запусков.


7-86187
Роман02
2002-10-22 15:06
2002.12.26
Програмное измерение температуры процессора