![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Dedal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 6.5.2004 Репутация: нет Всего: нет |
Вопрос такой. Может кто подскажет. Надо открыть файл BMP. С этим-то проблем нет. Но как, допустим, в 2000-м(или любом другом) байте младший бит обнулить? Сделать это надо наложением маски вида 11111110 путем логического умножения.
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Crane |
|
|||
|
Unregistered |
Можно ли файл читать по битно, получается геморно раскладывать считанный байт на биты для послудующего их изменения, нужно весь файл перебрать побитно для применения хитрого скремблера к каждому прочитанному биту. Должен же быть способ через функции MS-DOS, или со вставками на ассемблере или еще как, но должно же быть решение подскажите!
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нет. Операционная система позволяет читать только блоками, размер которых указывается в байтах. Соответственно минимальная единица считываемой информации = 1 байт. Но оптимально читать большими блоками (лучше сразу весь файл) и работать с байтами уже в памяти. Добавлено @ 08:54 Кроме того нет типа данных для хранения одного бита. Все равно вся работа идет минимум с байтом. |
|||
|
||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
p0s0l, глядя на твой код мне почему-то кажется что после всех дел, которые ты там описал файл станет длиной 2000 б. Хотя я на 100% не уверен. А ты уверен, что он останется прежней длины???
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Файл останентся той длины, которой был, если до этого он был длиннее, чем 2000.
Задача стояла - изменить 2000-й байт. |
|||
|
||||
| Dr.No_xXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Как вариант мона сделать так.В каждом байте хранится 8 бит.То есть в этих 8 битах хранится код байта.Мона впринципе,при знании кодов,просто выводить инфу в битах.
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Куда выводить? Зачем?? Человеку нужно изменить один или несколько бит в файле. Тут только один путь - цитаешь нужный байт, меняешь в нем нужный бит и пишешь его назад. |
|||
|
||||
| Dimannn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 14.4.2005 Где: Владимир Репутация: нет Всего: 1 |
Попробуй так
Это сообщение отредактировал(а) Dimannn - 15.4.2005, 10:06 -------------------- Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут? Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Dimannn Зачем такие извращения? И при чем тут изменение байт(Boolean имеет размер 1 байта, а не бита!!!!)? Уже все давно распиали. Зачем постить код, не имея представления о том, что он делает?
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |