Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип данных размером 1 бит 
:(
    Опции темы
psyco
Дата 10.11.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Здравствуйте! Мне необходимо осуществить запись данных в файл с размером каждого символа в 1 бит: простой набор 0 и 1. Пытался реализовать свой тип данных для файла, но как оказалось минимальный размер это 1 байт. Записывал данные в бинарные файлы, но и в этом случае каждый символ занимал размер в 1 байт. Так же пытался использовать динамическую память, но никак.
Подскажите, пожалуйста, возможно ли записывать данные в файл с учетом того, что каждый символ занимает 1 бит? Возможно ли создать такой тип данных? Буду очень благодарен за ваши ответы, и за идеи!
PM MAIL   Вверх
Alexeis
Дата 10.11.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(psyco @  10.11.2010,  15:08 Найти цитируемый пост)
Подскажите, пожалуйста, возможно ли записывать данные в файл с учетом того, что каждый символ занимает 1 бит? Возможно ли создать такой тип данных? Буду очень благодарен за ваши ответы, и за идеи! 

  Просто записывать в файл данные когда наберется не меньше 8ми бит. Пока не набралось держать биты в байте. Как набрался байт, так скидывать его в файл.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
psyco
Дата 10.11.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(Alexeis @ 10.11.2010,  14:13)
Просто записывать в файл данные когда наберется не меньше 8ми бит. Пока не набралось держать биты в байте. Как набрался байт, так скидывать его в файл.

Простите, но я не совсем понимаю. При записи в файл, любой символ занимает 1 байт, при этом я не могу создать переменной размером 1 бит для записи и т.д.
PM MAIL   Вверх
Alexeis
Дата 10.11.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(psyco @  10.11.2010,  15:23 Найти цитируемый пост)
При записи в файл, любой символ занимает 1 байт, при этом я не могу создать переменной размером 1 бит для записи и т.д. 

  При записи в файл любой блок может быть не менее одного байта, а символ может занимать сколько угодно. Вот например битмапка в черно-белом формате хранит в одном блоке размером в байт 8 пикселов. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
psyco
Дата 10.11.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(Alexeis @ 10.11.2010,  14:27)
При записи в файл любой блок может быть не менее одного байта, а символ может занимать сколько угодно. Вот например битмапка в черно-белом формате хранит в одном блоке размером в байт 8 пикселов.

Это в бинарных файлах? Я так понимаю Вы имеете в виду функцию BlockWrite для записи блока, да? А тип данных параметра переменной, которую мы записываем не имеет значения?BlockWrite(MyFile,Text,Size);
PM MAIL   Вверх
Artemon
Дата 10.11.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



struct S
{
int a0 : 1;
int a1 : 1;
int a2 : 1;
int a3 : 1;
int a4 : 1;
int a5 : 1;
int a6 : 1;
int a7 : 1;
};


Вот тебе 8 бит, распорядись ими достойно.

Добавлено через 42 секунды
Только вот как в Delphi это представить - не знаю


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Alexeis
Дата 10.11.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(psyco @  10.11.2010,  15:32 Найти цитируемый пост)
Это в бинарных файлах? Я так понимаю Вы имеете в виду функцию BlockWrite для записи блока, да?

  На самом деле, я писал безотносительно метода доступа к файлу. Ведь файлы на диске не бывают текстовыми или бинарными. Текстовый файл это лишь механизм для упрощения доступа к данным. Очевидно, что для нестандартного символа потребуется нестандартная работа с файлом. Т.е. работа с байтами.
  
Цитата(Artemon @  10.11.2010,  15:34 Найти цитируемый пост)
Только вот как в Delphi это представить - не знаю 

  Например установить 7й бит в 1 (начиная с нуля)
Код

b := b or (1 shl 7);

  Сбросить этот же бит в 0
Код

b := b and not (1 shl 7);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
psyco
Дата 10.11.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Alexeis, спасибо большое, Вот окончательный алгоритм - я создал переменную типа byte, т.е она содержит 8 бит. С помощью сдвига значения на некоторое число бит(формирование в 8 битах 0 и 1) я создаю свои 8 бит. Записываю эту переменную-байт в файл, где она занимает один байт, как раз то что надо! Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0902 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.