Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как прочесть фаил такой структуры [D7]


Страницы:   1 2 3

Silver... ©   (2008-02-01 13:26:00) 

Дается такая вот структура файла

1.  1 int
2.  90 int
3.  1 Int
4.  4 Int
5.  1 Int

------- Может повториться несколько раз --- Begin
6.1   4 int
6.2  16 char
6.3  16 char
------- Может повториться несколько раз --- End
7.  1 int

...
 Думал прочсть в String или в поток а потом разбирать по-байтно, только предвижу мороки тут...

Есть др. решение?


ketmar   (2008-02-09 11:24:00) [1]

Удалено модератором


Бегущий человек   (2008-02-09 07:56:00) [2]

По-моему(если мне не изменяет память :) ) , если читать из файла не через FileStream, а дедовским способом через Read, то байты не будут инвертироваться.
Ай-ай-ай, не бейте ногами, - знаю, что read не кульно :)


Silver...   (2008-02-08 22:04:00) [3]


> ketmar ©   (08.02.08 21:53) [42]


asm хорошо бум делать


> MOO   (08.02.08 21:58) [43]


[29] ... наоборот читает вот в чем проблема - потом инвертировать надо ... а так проблем нету


MOO   (2008-02-08 21:58:00) [4]


> НО все 4 байта сразу а не по одному

Эээ...и в чем проблема?


ketmar   (2008-02-08 21:53:00) [5]

>[40] Silver... (2008-02-08 21:51:00)
так как про "менять местами байты" ты, кажется, уже знаешь -- [39]. и
function Swap4 (v: Integer): Integer; assembler; asm bswap eax; end; .

---
Understanding is not required. Only obedience.


Silver...   (2008-02-08 21:52:00) [6]


> ketmar ©   (08.02.08 21:45) [39]



> Silver...   (08.02.08 19:14) [29]


> Есть функця Swap но для LongWordприменить нельзя


Silver...   (2008-02-08 21:51:00) [7]


> ketmar ©   (08.02.08 20:12) [34]
> >[32] Silver... (2008-02-08 19:59:00)
> идём, и читаем про byte order. думаем. пишем.


> ketmar ©   (08.02.08 21:37) [37]


к кожалению на моем ничего путного не написано :)

Гуглю ... не нахожу :(  ... ссылочку подкинь


ketmar   (2008-02-08 21:45:00) [8]

>[38] Silver... (2008-02-08 21:38:00)
swap, f1.

---
Understanding is not required. Only obedience.


Silver...   (2008-02-08 21:38:00) [9]


> MOO   (08.02.08 21:31) [36]


> PS. Ответ "сделай руками" не тот который ожидаю :)


Потому как сейчас именно так и делаю. Но не кажется несколько глуповато чтать наоборот чтоб потом инверситовать. Не логичнее читать сразу правельно - НО все 4 байта сразуа не по одномув обратном порядке = читать как есть потом инверсировать


ketmar   (2008-02-08 21:37:00) [10]

>[35] Silver… (2008-02-08 21:17:00)
>Где читать?

на заборе.

---
Understanding is not required. Only obedience.


MOO   (2008-02-08 21:31:00) [11]


> Silver...   (08.02.08 19:59) [32]

Что то мне подсказывает, что из 02 00 сделать 00 02. Вот и будет тебе 2, а не 512.


Silver...   (2008-02-08 21:17:00) [12]


> ketmar ©   (08.02.08 20:12) [34]


Где читать?


> Anatoly Podgoretsky ©   (08.02.08 20:07) [33]
> > Silver...  (08.02.2008 19:59:32)  [32]
>
> Где прочтется, почему прочтется?


Где -> FileStream.Read(a, SizeOf(a));
почему -> а незнаю выводы делаю по тому что получаю после Read

--- Offtop - Begin -----------------------

to

> Anatoly Podgoretsky ©   (08.02.08 20:07) [33]

 Из ваших постов видно что только по тексту замечания есть а по сути близко нулю

Искренние пожелания: "смотрим на луну а не на палец" - Зри в корень

PS. "И в окошке видеть 2 ,а не 512"

--- Offtop - End -----------------------


ketmar   (2008-02-08 20:12:00) [13]

>[32] Silver... (2008-02-08 19:59:00)
идём, и читаем про byte order. думаем. пишем.

блин, я согласен, чтобы не чинили дороги, только пусть устранят вторую проблему!

---
Understanding is not required. Only obedience.


Anatoly Podgoretsky   (2008-02-08 20:07:00) [14]

> Silver...  (08.02.2008 19:59:32)  [32]

Где прочтется, почему прочтется?


Silver...   (2008-02-08 19:59:00) [15]

FileStream.Read(a, 2)

Читает байты с конца к началу

типа в файле написано: 00 02
прочтется: 02 00

вместо нужного a = 2
получаю a = 512

как сделать?
...
a: Word;
...
FileStream.Read(a, SizeOf(a));
ShowMessage(IntToStr(a));
...


И в окошке видеть 2а не 512
Достаточо по русски?


Silver...   (2008-02-08 19:42:00) [16]

а где именно не понятно?


Anatoly Podgoretsky   (2008-02-08 19:40:00) [17]

> Silver...  (08.02.2008 19:14:29)  [29]

Что ты написал, повтори по русски.


Silver...   (2008-02-08 19:14:00) [18]

... извеняюсь за долгое отсуствие

Anatoly Podgoretsky ©   (01.02.08 20:41) [27]

Хотел подсказки как сделать ввиде
FileStream.Read( MyRec, SizeOf(MyRec));
и одним махом получть весь файл в мою запись MyRec

... проблема в том что во все поля чталось по 2 байта а не 2, 1, 4 байта соответственно ... да еще чталось наоборот - поэтому казалось что в корни не так делаю. Разбирая HexEdit-ом понял что инвертировать надо

вобщем разбираю файл побайтно

наткнулся на следующее:
делаю

 MyRec: record
 ...
   Pole1: Word;            // 16 bit
   Pole2: Byte;             //  8 bit
   Pole3: LongWord;      // 32 bit
 ...
 end;

 ...
 FileStream.Read(MyRec.Pole1, SizeOf(MyRec.Pole1));
 FileStream.Read(MyRec.Pole2, SizeOf(MyRec.Pole2));
 FileStream.Read(MyRec.Pole3, SizeOf(MyRec.Pole3));
 ...


из файла
---
00 02 C1 00 FC 50 01
---
получаю значения
MyRec.Pole1 = 02 00
MyRec = C1
MyRec.Pole2 = 01 50 FC 00

т.е. прочитаные наоборот

Есть функця Swap но для LongWord применить нельзя
Вопрос: Как чтать в том порядке как записано в файле а не наоборот
PS. Ответ "сделай руками" не тот который ожидаю :)


Плохиш   (2008-02-01 23:34:00) [19]


> Silver...   (01.02.08 18:23) [25]

Я сказал вариант, слушать не хочешь, чё пришёл с вопросами, не понятмно... Сиди дальше скули...


Anatoly Podgoretsky   (2008-02-01 20:41:00) [20]

> Silver...  (01.02.2008 18:23:25)  [25]

Так нет никакой разницы в таком случае, помогут тебе или нет.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо