Работа с байтами в Delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Работа с байтами в Delphi - 2008-01-26 18:37:55.270000
|
|
|
HM47
Сообщений: 3
Оценки: 0
Присоединился: 2008-01-26 17:59:01.090000
|
Как в Delphi через TFileStream реализовать чтение/запись нескольких байтов по указанному оффсету. К примеру: По адресу 0x10 в файле прочитать/записать 20 байт
|
|
|
RE: Работа с байтами в Delphi - 2008-01-26 20:55:34.076666
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
quote:
Read(var Buffer; Count: Longint): Longint — читает Count байт из потока в буфер Buffer, продвигает текущую позицию на Count байт вперед и возвращает число прочитанных байт. Если значение функции меньше значения Count, то в результате чтения был достигнут конец потока. ReadBuffer(var Buffer; Count: Longint) — читает из потока Count байт в буфер Buffer и продвигает текущую позицию на Count байт вперед. Если выполняется попытка чтения за концом потока, то генерируется ошибка. Seek(Offset: Longint; Origin: Word): Longint — продвигает текущую позицию в потоке на Offset байт относительно позиции, заданной параметром Origin. Параметр Origin может иметь одно из следующих значений: 0 — смещение задается относительно начала потока; 1 — смещение задается относительно текущей позиции в потоке; 2 — смещение задается относительно конца потока. Write(const Buffer; Count: Longint): Longint — записывает в поток Count байт из буфера Buffer, продвигает текущую позицию на Count байт вперед и возвращает реально записанное количество байт. Если значение функции отличается от значения Count, то при записи была ошибка. WriteBuffer(const Buffer; Count: Longint) — записывает в поток Count байт из буфера Buffer и продвигает текущую позицию на Count байт вперед. Если по какой-либо причине невозможно записать все байты буфера, то генерируется ошибка.
|
|
|
RE: Работа с байтами в Delphi - 2008-01-28 12:15:39.470000
|
|
|
HM47
Сообщений: 3
Оценки: 0
Присоединился: 2008-01-26 17:59:01.090000
|
Вот использую этот код: procedure TForm1.Button1Click(Sender: TObject); var a:TFileStream; s:integer; begin OpenDialog1.Execute; a:=TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite); a.Seek($0,soFromBeginning); a.Read(s, sizeof(s)); IF s=$05020302 then begin s:=$00000008; a.Seek($0,soFromBeginning); a.write(s,sizeof(s)); end; a.free; end; Проблема в том что не могу читать и записывать больше 4-х байт. Как мне сделать чтоб можно было читать и записывать 30 байт
|
|
|
RE: Работа с байтами в Delphi - 2008-01-28 20:33:46.580000
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
quote:
a.Read(s, sizeof(s)); s объявлен как Integer, а это и есть 4 байта. Используй массив, например, а лучше делай типобезопасное чтение.
|
|
|
|
|