3 / 3 / 0
Регистрация: 26.11.2015
Сообщений: 170
|
||||||||||||||||
1 | ||||||||||||||||
BlockWrite и BlockRead01.10.2017, 01:28. Показов 2496. Ответов 6
Метки нет (Все метки)
http://www.delphibasics.ru/BlockWrite.php
byteArray[2] = 00000010 byteArray[3] = 00000011 byteArray[4] = 00000100 byteArray[5] = 00000101 byteArray[6] = 00000110 byteArray[7] = 00000111 byteArray[8] = 00001000 Запись байтов идет справа налево, а значит: Первая запись = 00000100000000110000001000000001 Вторая запись = 00001000000001110000011000000101
byteArray[2] = 00000100 byteArray[3] = 00001001 byteArray[4] = 00010000 Запись байтов идет справа налево, а значит: Третья запись = 00010000000010010000010000000001 Конечная запись: 00010000000010010000010000000001000010000000011100000110000001010000010000000011 0000001000000001
0
|
01.10.2017, 01:28 | |
Ответы с готовыми решениями:
6
Альтернатива AssignFile, BlockRead, BlockWrite С помощью процедур BlockRead и BlockWrite добавить к первому файлу содержимое второго файла BlockWrite BlockRead Использование blockread / blockwrite |
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
|
|
01.10.2017, 01:52 | 2 |
0
|
3 / 3 / 0
Регистрация: 26.11.2015
Сообщений: 170
|
|
01.10.2017, 02:07 [ТС] | 3 |
Читает побайтово, а не по 2 байта!
Reset(myFile, 2) - одна запись равна 2 байта. А читает как 1! Значит данные в порядке заполнения массива!
0
|
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
|
|
01.10.2017, 02:50 | 4 |
0
|
3 / 3 / 0
Регистрация: 26.11.2015
Сообщений: 170
|
|
01.10.2017, 08:13 [ТС] | 6 |
Слева направо идет? Тогда все равно не понимаю.
byteArray[1] = 00000001 byteArray[2] = 00000010 byteArray[3] = 00000011 byteArray[4] = 00000100 Отдельная запись в 4 байта с этими числами примет вид byteArray[1]+byteArray[2]+byteArray[3]+byteArray[4] = 00000001000000100000001100000100 - так или нет? То бишь запись равна 16909060 в Integer-е? Reset(myFile, 2) - изменяем длину записи на 2 байт. В документе сохранено 4 байт, а значит 1 запись преобразовывается в 2 записи, 0000000100000010 и 0000001100000100. При выполнении первая запись равна 1, а должна 258!!!!!
0
|
Айлурофил
|
|
01.10.2017, 15:11 | 7 |
И не справа налево, и не слева направо, а по порядку.
Вы путаете расположение байтов в памяти, и расположение байтов в числах. адр адр+1 адр+2 адр+3 00000001 00000010 00000011 00000100 Но если интерпретировать это как целое число, то младший байт - 00000001, то есть число будет 00000100000000110000001000000001
0
|
01.10.2017, 15:11 | |
01.10.2017, 15:11 | |
Помогаю со студенческими работами здесь
7
Чем заменить BlockRead и BlockWrite из TurboPascal? С помощью методов BlockRead и BlockWrite создать копию файла Blockread и Blockwrite. Добавить к 1-му файлу содержание второго, а ко второму файлу - содержание первого BlockWrite, и её скорость работы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |