Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Дмитрий К.К.   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.036 c
3-85856
3D-Dragon
2002-12-07 23:56
2002.12.26
Как в строку SQL запроса вставить переменную ?


1-85973
Black Tiger
2002-12-15 15:05
2002.12.26
Файлы


14-86117
MaximatorVeter
2002-11-27 22:35
2002.12.26
30 таблеток нитроглицирина и 10 снотворного (не знаю какого)


1-85984
xyz
2002-12-16 00:43
2002.12.26
Как изменить BIOS?


1-85964
wicked
2002-12-15 03:11
2002.12.26
наследование TGraphic





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский