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

Вниз

Binary component   Найти похожие ветки 

 
SMAC   (2006-04-14 18:09) [0]

Ув. мастера! Возможно ли в Delphi создать (или использовать готовый) компонент, который бы хранил информацию в исходном бинарном формате?
Скажем TMemo хранит инфу в тексте, TImage в имидже и т. д.
Как использовать контейнер для хранения именно нулей и единиц (скажем файл целиком)?
Необходимые методы и свойства:

TBinSource.LoadFromFile(FileName : string);
TBinSource.SaveToFile(FileName : string);
TBinSource.Length : Int64 (Longint);
TBinSource.Create;
TBinSource.Free;
TBinSource[i] : Boolean, Byte;


Я понимаю, что многие уже откровенно смеются читая это. Да, действительно тип array удовлетворяет всем указанным требованиям. Вся соль в том, что я хочу сделать визуальный компонент! Никакого представления содержащейся в компоненте информации не нужно. Необходимо только името возможность предварительной загрузки в компонент всей нужной информации и только (по типу TImageList).

Надеюсь на понимание и помощь. Заранее спасибо.


 
Юрий Зотов ©   (2006-04-14 21:13) [1]

Как же компонент может быть ВИЗУАЛЬНЫМ, если он ничего не отображает?Он будет как раз НЕвизуальным.

А остальное просто - сделайте его оболочкой вокруг TMemoryStream, там все уже готово.


 
SMAC   (2006-04-15 15:21) [2]

Может быть я не так сформулировал.
Нужен компонент по типу TImageList, но хранящий вместо иконок чисто бинарную информацию. Причем любого (разумного конечно) размера таким образом, чтобы обратившись в к любому i-му объекту можно было узнать любой j-й его бит (байт). Ну, и сообтветсвенно длину i-го объекта, кол-во всех i-х объектов и т.д.


 
Leonid Troyanovsky ©   (2006-04-15 22:13) [3]


> SMAC   (15.04.06 15:21) [2]

> Нужен компонент по типу TImageList, но хранящий вместо иконок
> чисто бинарную информацию


Может и не нужен никакой компонент, а хватит дедовского
способа с созданием именованных ресурсов типа RCDATA.
Тем более, что rc файл сечас достаточно только включить в проект.

--
Regards, LVT.


 
Юрий Зотов ©   (2006-04-15 23:35) [4]

> SMAC   (15.04.06 15:21) [2]

И какие проблемы?

Если нужен именно список, то оберткой вокруг TMemoryStream делаем не сам компонент, а вживляем в него, например, коллекцию, каждый элемент которой является оберткой вокруг TMemoryStream.


 
SMAC   (2006-04-17 12:27) [5]

Народ! Можно поподробнее и о TMemoryStream и об RCDATA (на случай, если не осилю TMemoryStream)?!


 
Юрий Зотов ©   (2006-04-17 13:51) [6]

> SMAC   (17.04.06 12:27) [5]

> Можно поподробнее и о TMemoryStream ...
В справке Delphi.

> ... и об RCDATA
В справке API, входящей в дистрибутив Delphi.

> на случай, если не осилю TMemoryStream
Там все очень просто. Основной вопрос будет не в этом, а в создании потомка TCollectionItem, являющегося оберткой вокруг TMemoryStream, создании самой коллекции и ее внедрении в компонент. Вот эта статья должна помочь:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=215


 
SMAC   (2006-04-17 14:28) [7]

Спасибо. Отличная статья на (как мне кажется) мою тему. Читаю, разбираюсь...

RCDATA отложу на потом (как, опять же, мне кажется - там придется делать ещё одну программу - уже для Delphi - по систематизации ресурсов и без Delphi работа моей проги будет уже никак...)


 
Leonid Troyanovsky ©   (2006-04-18 21:36) [8]


> SMAC   (17.04.06 14:28) [7]


Создается впечатление, что свой компонент, все же, не нужен,
а достаточно, на этот раз, вполне современного метода - использование
SQL сервера (не обязательно MSSQL).
Который может быть локальным (MSDE, IB/FB) или даже embedded.
См., например www.ibase.ru.
Т.е., систематизировать ресурсы таким образом - проще некуда.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-04-18 21:46) [9]


> Юрий Зотов ©   (17.04.06 13:51) [6]

> Там все очень просто. Основной вопрос будет не в этом, а
> в создании потомка TCollectionItem, являющегося оберткой
> вокруг TMemoryStream, создании самой коллекции и ее внедрении
> в компонент.


Честно говоря, статью я не читал, но кажется мне, что проще
построить компонент на базе StgCreateDocFile, IStorage & etc.
Ну, или, даже не компонент, а, скажем, дельфийские обертки,
бо, суть этого подхода легко усвояема.

--
Regards, LVT.


 
Юрий Зотов ©   (2006-04-18 22:47) [10]

> Leonid Troyanovsky ©   (18.04.06 21:46) [9]

Тоже хорошее решение, спору нет. Что проще - не знаю, это зависит от предыдущего опыта. На компонент, построенный на базе TMemoryStream мне нужна пара часов, а вот с IStorage я бы провозился подольше, уже подзабыл его, вспоминать надо. В общем, кому что нравится.



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

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

Наверх




Память: 0.49 MB
Время: 0.038 c
15-1164746342
Loginov Dmitry
2006-11-28 23:39
2006.12.17
Test


4-1155022476
shake
2006-08-08 11:34
2006.12.17
завершение процесса


2-1164760887
Alek Aaz
2006-11-29 03:41
2006.12.17
Форматирование строк.


2-1164355090
pohil
2006-11-24 10:58
2006.12.17
Свойства компонента


3-1160466849
Dmitry_Chernov
2006-10-10 11:54
2006.12.17
Аналог периодического реквизита в Delphi