![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Binary component
SMAC © (2006-04-14 18:09:00)Ув. мастера! Возможно ли в 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-18 22:47:00) [1]> Leonid Troyanovsky © (18.04.06 21:46) [9]
Тоже хорошее решение, спору нет. Что проще - не знаю, это зависит от предыдущего опыта. На компонент, построенный на базе TMemoryStream мне нужна пара часов, а вот с IStorage я бы провозился подольше, уже подзабыл его, вспоминать надо. В общем, кому что нравится.
Leonid Troyanovsky (2006-04-18 21:46:00) [2]
> Юрий Зотов © (17.04.06 13:51) [6]
> Там все очень просто. Основной вопрос будет не в этом, а
> в создании потомка TCollectionItem, являющегося оберткой
> вокруг TMemoryStream, создании самой коллекции и ее внедрении
> в компонент.
Честно говоря, статью я не читал, но кажется мне, что проще
построить компонент на базе StgCreateDocFile, IStorage & etc.
Ну, или, даже не компонент, а, скажем, дельфийские обертки,
бо, суть этого подхода легко усвояема.
--
Regards, LVT.
Leonid Troyanovsky (2006-04-18 21:36:00) [3]
> SMAC (17.04.06 14:28) [7]
Создается впечатление, что свой компонент, все же, не нужен,
а достаточно, на этот раз, вполне современного метода - использование
SQL сервера (не обязательно MSSQL).
Который может быть локальным (MSDE, IB/FB) или даже embedded.
См., например www.ibase.ru.
Т.е., систематизировать ресурсы таким образом - проще некуда.
--
Regards, LVT.
SMAC (2006-04-17 14:28:00) [4]Спасибо. Отличная статья на (как мне кажется) мою тему. Читаю, разбираюсь...
RCDATA отложу на потом (как, опять же, мне кажется - там придется делать ещё одну программу - уже для Delphi - по систематизации ресурсов и без Delphi работа моей проги будет уже никак...)
Юрий Зотов (2006-04-17 13:51:00) [5]> 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 12:27:00) [6]Народ! Можно поподробнее и о TMemoryStream и об RCDATA (на случай, если не осилю TMemoryStream)?!
Юрий Зотов (2006-04-15 23:35:00) [7]> SMAC (15.04.06 15:21) [2]
И какие проблемы?
Если нужен именно список, то оберткой вокруг TMemoryStream делаем не сам компонент, а вживляем в него, например, коллекцию, каждый элемент которой является оберткой вокруг TMemoryStream.
Leonid Troyanovsky (2006-04-15 22:13:00) [8]
> SMAC (15.04.06 15:21) [2]
> Нужен компонент по типу TImageList, но хранящий вместо иконок
> чисто бинарную информацию
Может и не нужен никакой компонент, а хватит дедовского
способа с созданием именованных ресурсов типа RCDATA.
Тем более, что rc файл сечас достаточно только включить в проект.
--
Regards, LVT.
SMAC (2006-04-15 15:21:00) [9]Может быть я не так сформулировал.
Нужен компонент по типу TImageList, но хранящий вместо иконок чисто бинарную информацию. Причем любого (разумного конечно) размера таким образом, чтобы обратившись в к любому i-му объекту можно было узнать любой j-й его бит (байт). Ну, и сообтветсвенно длину i-го объекта, кол-во всех i-х объектов и т.д.
Юрий Зотов (2006-04-14 21:13:00) [10]Как же компонент может быть ВИЗУАЛЬНЫМ, если он ничего не отображает?Он будет как раз НЕвизуальным.
А остальное просто - сделайте его оболочкой вокруг TMemoryStream, там все уже готово.