Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.25;
Скачать: CL | DM;

Вниз

чтение параметров из blolb   Найти похожие ветки 

 
stud ©   (2005-06-10 11:13) [0]

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


 
Ega23 ©   (2005-06-10 11:29) [1]

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


 
stud ©   (2005-06-10 11:35) [2]

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


 
Ega23 ©   (2005-06-10 11:51) [3]

А как ты их в 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 12:00) [4]

понятно


 
Digitman ©   (2005-06-10 12:49) [5]

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


 
stud ©   (2005-06-10 13:51) [6]


> DataString

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

> SetStrings


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

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 14:11) [8]

спасибо



Страницы: 1 вся ветка

Текущий архив: 2005.07.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
9-1113357818
Change
2005-04-13 06:03
2005.07.25
Исходники БК


1-1120582450
Vovkin 3
2005-07-05 20:54
2005.07.25
Как одиночные Enter удалить, а в двойных оставить только один?


4-1117287880
zeroo
2005-05-28 17:44
2005.07.25
Как отловить нажатие клавиши TAB


1-1120377854
VadimX
2005-07-03 12:04
2005.07.25
Помогите оптимизировать код


1-1120570960
Sagrer
2005-07-05 17:42
2005.07.25
Можно ли удалить элемент динамического массива?