Форум: "Компоненты";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.052 c