Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
2-1164636182
Фёдр_иваныч
2006-11-27 17:03
2006.12.17
Разложение числа на множетели


15-1164569116
Piter
2006-11-26 22:25
2006.12.17
Забавный глюк миранды


15-1163362545
Nic
2006-11-12 23:15
2006.12.17
Настройка ICQ in User Gate


9-1140196538
VolanD666
2006-02-17 20:15
2006.12.17
Косячит алгоритм?


8-1146557385
zoltan
2006-05-02 12:09
2006.12.17
Как найти площадь фигуры произвольной формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский