Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

чтение параметров из blolb


stud ©   (2005-06-10 11:13:00) 

есть blob поле, в катором хранятся параметры в виде как в ини-файле,
как считать эти данные в локальные переменные?


stud   (2005-06-10 14:11:00) [1]

спасибо


Digitman   (2005-06-10 14:00:00) [2]

ss:=TStringStream.Create;
TBLOBField(DataSet.FieldByName('FieldName')).SaveToStream(ss);
ini := TMemIniFile.Create('');
sl := TStringList.Create;
sl.Text := ss.DataString;
ini.SetStrings(sl);


stud   (2005-06-10 13:51:00) [3]


> DataString

неесовместимые типы

> SetStrings


Digitman   (2005-06-10 12:49:00) [4]

ss:=TStringStream.Create;
TBLOBField(DataSet.FieldByName('FieldName')).SaveToStream(ss);
ini := TMemIniFile.Create('');
ini.SetStrings(ss.DataString);


stud   (2005-06-10 12:00:00) [5]

понятно


Ega23   (2005-06-10 11:51:00) [6]

А как ты их в blob писал? Вот как писал, так и считывать надо.
Могу предложить следующее (сам недавно реализовал):
данные в BLOB пишутся в формате, похожим на формат Tiff -
есть чёткая структура тэгов

TGfxTagStruct = packed record
 Tag           : Word;
 wParam        : Cardinal;
 lParam        : Cardinal;
 Offset        : Cardinal;
end;


где
Tag - номер тэга,
wParam, lParam - могут быть разные значения, зависящие от номера тэга,
 Offset - позиция следующего тэга относительно начала BLOB'а.

Скажем, тэг, отвечающий за хранение картинки (bmp) будет выглядеть так:
Tag - номер (например 10)
lParam - размер картинки
wParam - позиция начала картинки относительно начала BLOB'а
Offset - позиция следующего тэга относительно начала BLOB'а (если последний - то 0)

тэг, отвечающий за цвет фонта будет выглядеть так:
Tag - номер (например 12)
lParam - для данного тэга не используется
wParam - размер фонта
Offset - позиция следующего тэга относительно начала BLOB'а (если последний - то 0)

тэг, отвечающий за какую-то строку будет выглядеть так:
Tag - номер (например 15)
lParam - размер строки
wParam - указатель на начало строки
Offset - позиция следующего тэга относительно начала BLOB'а (если последний - то 0)

и так далее.


stud   (2005-06-10 11:35:00) [7]

это уже написал
но как определить размер считываемых данных?
параметры имеют разную длину, например
timestart='00:00'
datestart='01.01.2005'


Ega23   (2005-06-10 11:29:00) [8]

ms:=TMemoryStream.Create;
TBLOBField(DataSet.FieldByName('FieldName')).SaveToStream(ms);
ms.readBuffer(...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо