| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Работа с файлами |
| Автор: Dedal 6.5.2004, 00:26 |
| Вопрос такой. Может кто подскажет. Надо открыть файл BMP. С этим-то проблем нет. Но как, допустим, в 2000-м(или любом другом) байте младший бит обнулить? Сделать это надо наложением маски вида 11111110 путем логического умножения. |
| Автор: p0s0l 6.5.2004, 14:32 | ||
|
| Автор: Crane 9.4.2005, 16:54 |
| Можно ли файл читать по битно, получается геморно раскладывать считанный байт на биты для послудующего их изменения, нужно весь файл перебрать побитно для применения хитрого скремблера к каждому прочитанному биту. Должен же быть способ через функции MS-DOS, или со вставками на ассемблере или еще как, но должно же быть решение подскажите! |
| Автор: Snowy 11.4.2005, 08:49 | ||
Нет. Операционная система позволяет читать только блоками, размер которых указывается в байтах. Соответственно минимальная единица считываемой информации = 1 байт. Но оптимально читать большими блоками (лучше сразу весь файл) и работать с байтами уже в памяти. Добавлено @ 08:54 Кроме того нет типа данных для хранения одного бита. Все равно вся работа идет минимум с байтом. |
| Автор: EKoshelev 14.4.2005, 09:33 |
| p0s0l, глядя на твой код мне почему-то кажется что после всех дел, которые ты там описал файл станет длиной 2000 б. Хотя я на 100% не уверен. А ты уверен, что он останется прежней длины??? |
| Автор: Snowy 14.4.2005, 11:26 |
| Файл останентся той длины, которой был, если до этого он был длиннее, чем 2000. Задача стояла - изменить 2000-й байт. |
| Автор: Dr.No_xXx 14.4.2005, 13:54 |
| Как вариант мона сделать так.В каждом байте хранится 8 бит.То есть в этих 8 битах хранится код байта.Мона впринципе,при знании кодов,просто выводить инфу в битах. |
| Автор: Snowy 14.4.2005, 15:20 | ||
Куда выводить? Зачем?? Человеку нужно изменить один или несколько бит в файле. Тут только один путь - цитаешь нужный байт, меняешь в нем нужный бит и пишешь его назад. |
| Автор: Dimannn 15.4.2005, 10:05 | ||
Попробуй так
|
| Автор: <Spawn> 15.4.2005, 11:38 |
| Dimannn Зачем такие извращения? И при чем тут изменение байт(Boolean имеет размер 1 байта, а не бита!!!!)? Уже все давно распиали. Зачем постить код, не имея представления о том, что он делает? |