Текущий архив: 2007.07.01;
Скачать: CL | DM;
Вниз
Stream.Write Найти похожие ветки
← →
ANTPro © (2006-11-21 00:37) [0]
Var
ID:Cardinal;
...
// пишу в файл
ID := $00454249;
fStream.Write(ID, 4);//Почему идет запись наоборот?
//В файле будет записанно: 49 42 45 00
...
//читаю это из файла…
fStream.Read(ID, 4);
if (ID <> $49424500)) then//Здесь будет True, почему?
...
← →
thaddy (2006-11-21 01:14) [1]This may be a studid answer, but...
fStream.pos := fStream.pos -4;//??
before you read back.
;) It"s a stream!
And it works. You know that, you"re too good to forget.
← →
Боб (2006-11-21 07:53) [2]2 ANTPro
Я думаю так :
в памяти байты расположены начиная с младшего, т.е. 49 42 45 00.
В таком же порядке они пишутся в файл и в таком же читаются из файла.
поэтому после чтения ID <> $49424500 а должно быть
как раз ID = $00454249.
← →
ANTPro © (2006-11-21 17:10) [3]> [0] ANTPro © (21.11.06 00:37)
> fStream.Read(ID, 4);
> if (ID <> $49424500)) then//Здесь будет True, почему?
Тупой вопрос... ночью надо спать :)
> [1] thaddy (21.11.06 01:14)
Запись и чтение в разных процедурах... (разными fStream)
> [2] Боб (21.11.06 07:53)
> в памяти байты расположены начиная с младшего, т.е. 49 42
> 45 00.
Это единственное объяснение пока...
← →
Galkov © (2006-11-21 17:29) [4]
> > [1] thaddy (21.11.06 01:14)
>
> Запись и чтение в разных процедурах... (разными fStream)
Чаво :roll:
← →
Vga © (2006-11-21 17:58) [5]> // пишу в файл
>
> ID := $00454249;
> fStream.Write(ID, 4);//Почему идет запись наоборот?
> //В файле будет записанно: 49 42 45 00
Потому что Intel использует кодировку Little Endian.
> fStream.Read(ID, 4);
> if (ID <> $49424500)) then//Здесь будет True, почему?
Естественно, что записано, то и считается, а $00454249<>$49424500
Страницы: 1 вся ветка
Текущий архив: 2007.07.01;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.018 c