Stream - не знаю как вывести data, нужна консультация

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 00:03:57

bormant писал(а):вы упоминали SDK, давайте ссылку, хватит уже резать собачий хвост кусочками.

SDK вот здесь, его предоставил добрый Padre_Mortius см. во второй записи: http://freepascal.ru/forum/viewtopic.php?f=27&t=8913
Я почти уже разгадал... Вы мне правильно давали этот "Ваш" Hex... а я неправильно интерпретировал Ваши советы и примеры...
Думал о другом и принимал ложные решения. Только SDK большой и тяжёлый, решение много проще.


.

Добавлено спустя 5 минут 34 секунды:
Это как то связано с IEEE, очевидно с IEEE 754 в смысле числа с плавающей точкой.

Ещё эти числа вот так могут выглядеть в Hex редакторе:
00020100 5245464C 00020033 5452414E ....REFL...3TRAN (ура я теперь знаю что такое Hex редактор :cry: )

00020100 - наверно это нужно поделить вот так:
00,02,01,00 - соответственно это будет равнозначно записи data = (0,2,1,0) из примера википедии
и в каждой ячейке могут быть цифры от 0 до 255 т.к. PByteArray ...

Это судя по всему и есть одно деление из вышеприведённой строки Hex редактора => 00020100 либо 5245464C либо 00020033 либо 5452414E

:idea: :?: Вот такое число 5452414E в Hex редакторе, это будет data = (85,82,65,78) <== Правильно?
В смысле я попытался привести это к десятичной системе, а там если я правильно понимаю 16-я система, т.к. PByteArray? <== Правильно?
Хотя нет... там какая-то другая система, т.к. буквы выводятся нормально, а к Hex 16-й системе приводится вот так:
SomeChar := HD[M shr 4] + HD[M[i] and $F]; где const HD: array [0..$F] of char = '0123456789ABCDEF'; <== Правильно?
[i]Что-то мне подсказывает, что у многих с этого форума, при прочтении этого топика будут слёзы от смеха...





.

Добавлено спустя 1 час 57 минут 18 секунд:
В общем у меня получилось вот так:
Код: Выделить всё
0 => 49 4D 41 50 IMAP
4 => 00 2A 80 00 <=== вот это как привести к числу IEEE с плавающей точкой? (если это число с плавающей точкой)
8 => 43 48 41 4E CHAN
16 => 4C 52 4F 50 LROP
32 => 45 4E 41 42 ENAB
40 => 4E 45 47 41 NEGA
48 => 54 4D 41 50 TMAP

Судя по всему вышеприведённый текст, это то, что я искал, тут 4E 45 47 41 - это в 16-Hex, а NEGA - это вывод без декодирования.

А вот ниже приведенный текст, как привести к числам или точнее:
как узнать где там integer, a где float, а где вообще byte???
Существует какой-то IEEE разделитель/стандарт?

Код: Выделить всё
80 => 3F 80 00 00 ?? - это никак не определилось....
92 => 00 00 52 4F ..RO <== начало слова
96 => 54 41 00 0E TA.. <== конец слова - есть какие-то стандарты чтения?
216 => 00 01 3F 80 .... и это никак не определилось....


Есть какая-то стандартная система перевода шестнадцатеричных Hex в десятеричные: integer, float, byte???
Имеется ввиду система разделения между символами?
Как система отличает число от буквы?
:?: Как система IFF отличает число от числа с плавающей точкой или иной информацией? :oops: :cry:


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение alexey38 » 26.03.2013 05:33:58

vitaly_l писал(а):Есть какая-то стандартная система перевода шестнадцатеричных Hex в десятеричные: integer, float, byte???
Имеется ввиду система разделения между символами?
Как система отличает число от буквы?
Как система IFF отличает число от числа с плавающей точкой или иной информацией?

Обычно в бинарных форматах (а здесь именно такой формат) те кто пишут и те, кто читают заранее знают, какой в типе (integer, float, byte) должны быть записаны конкретные данные. Никаких разделителей нет, ни каких маркеров типов нет, все заранее знают, что нужно записать и что нужно прочитать, т.к. все пользуются одним и тем же SDK.

Вы пытаетесь разгадать, пытаясь заниматься хагинком высшей пробы (как заядлый хакер), но Вам придется тогда просто методом полного перебора пробовать разные сочетания типов данных на этих 12 байтах. Например, это 12 байтов, это 3 float, это 2 байта, 1 word, 1 float, 1 integer и т.д.
Думаю, что за 1-2 года Вы управитесь. Когда Вы ошибочно подумаете, что некие 4 байта - это float, то у Вас там будет бредовое число, так что хакинг начинайте с поиска вещестенных чисел float (single на паскале), double. А затем уже целые. Вначале ищите 4-х байтные, затем 2-байтные, со знаком и без знака, а в конце уже байты.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 08:48:01

как узнать где там integer, a где float, а где вообще byte???
В порядке увеличения затрат: 1) прочесть в документации, 2) спросить у того, кто писал или посмотреть его код, 3) заняться обратным проектированием (reverse engineering).
Как система IFF отличает число от числа с плавающей точкой или иной информацией?
Никак. IFF описывает только разделение на порции (chunk), всё остальное, включая содержимое порции -- внутренне представление для тех, кто знает, что с этим делать.

Дайте ссылку на какой-нибудь файл обсуждаем ого формата, чтобы не изобретать велосипед.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение debi12345 » 26.03.2013 09:30:47

Во, пошло реальное (со всеми его творческими головоломками, муками, пробами и ошибками) программирование,а не попытка получить все само собой с кавалерийского наскока. Если бы все было так просто как хочется, то программистов было бы больше чем дворников :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 11:47:17

debi12345 писал(а):Во, пошло реальное (со всеми его творческими головоломками, муками, пробами и ошибками) программирование
Какое уж тут творчество, тривиальная рутина (но довольно трудозатратная) по привязке данных к типам...

Вот пример разбора чанка 'PNTS' (хоть и разбирать там нечего, массив троек чисел с плавающей точкой одинарной точности, записанных в big-endian (net order) порядке следования байт), данные чанка взяты из вашей инструкции, размер откорректирован до 2-х троек:
Код: Выделить всё
  00000054 3F800000 3F800000 00000000    ...T?...?.......
           ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
           The X, Y, and Z coordinates of point number zero are 1.0,
           1.0, and 0.0 (in IEEE format).
      ^^^^
      There are 84 bytes in the PNTS chunk, so there are seven points
      in the object.
Код: Выделить всё
// dump for IFF PNTS chunk
// (c) Serg Bormant, 2013, License: GPL
// we are on low-endian system while data are big-endian or net-ordered
const
  chPNTS = $53544E50; // 'PNTS' low-endian
type
  // IFF chunk
  PChunk = ^TChunk;
  TChunk = record
    FourCC: LongInt;
    Size: LongInt;
    Data: Pointer;
  end;

  PPoint3d = ^TPoint3d;
  TPoint3d = packed record
    case Integer of
    0: (x, y, z: Single);
    1: (p: array [0..2] of Single);
  end;
  PPoint3dArr = array of TPoint3d; // FPC note: dynamic array is a pointer
 
procedure ReverseByteOrder(var Buffer; Count: Integer); // or use ntoh*() from Sockets unit
type
  PByte = ^Byte;
var
  p, q: PByte;
  t: Byte;
begin
  p := @Buffer; q := p + Count - 1;
  while p < q do begin
    t := p^; p^ := q^; q^ := t;
    inc(p); dec(q);
  end;
end;

function FourCCText(AFourCC: LongWord): string;
var
  s: string[4];
begin
  s[0] := #4; Move(AFourCC, s[1], 4);
  FourCCText := s;
end;

procedure DumpChunkPNTS(var Chunk: TChunk);
var
  i, Count: LongInt;
  j: Integer;
  p: PPoint3dArr absolute Chunk.Data;
begin
  with Chunk do begin
    WriteLn('PNTS{');
    Count := Size div sizeof(TPoint3d) - 1;
    for i := 0 to Count do begin
      for j := 0 to 2 do begin
        ReverseByteOrder(p[i].p[j], sizeof(p[0].p[0]));  // big-endian to low-endian
        Write(' ', p[i].p[j]);
      end;
      WriteLn;
    end;
    WriteLn('};')
  end;
end;

procedure DumpChunk(var Chunk: TChunk);
begin
  case Chunk.FourCC of
    chPNTS: DumpChunkPNTS(Chunk);
    else WriteLn(' *** Unknown chunk: ', FourCCText(Chunk.FourCC));
  end;
end;

const
  testData: array [0..23] of byte = (
    $3f, $80, $00, $00, $3f, $80, $00, $00, $00, $00, $00, $00,
    $3f, $80, $00, $00, $00, $00, $00, $00, $3f, $80, $00, $00);
  testPNTS: TChunk = (FourCC: chPNTS; Size: sizeof(testData); Data: @testData);

begin
  DumpChunk(testPNTS);
end.
Прогон:
Код: Выделить всё
PNTS{
  1.000000000E+00  1.000000000E+00  0.000000000E+00
  1.000000000E+00  0.000000000E+00  1.000000000E+00
};


Добавлено спустя 12 минут 7 секунд:
Дамп чанка PNTS, приведённого в примере
Код: Выделить всё
 
  464F524D 0000019C 4C574F42 504E5453    FORM....LWOBPNTS
  00000054 3F800000 3F800000 00000000    ...T?...?.......
           ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
           The X, Y, and Z coordinates of point number zero are 1.0,
           1.0, and 0.0 (in IEEE format).
      ^^^^
      There are 84 bytes in the PNTS chunk, so there are seven points
      in the object.

  BF800000 3F800000 00000000 3F800000    ....?.......?...
  BF800000 00000000 BF800000 BF800000    ................
  00000000 3F000000 BF000000 00000000    ....?...........
  00000000 3F000000 00000000 BF000000    ....?...........
  BF000000 00000000

const
  testData: array [0..$53] of byte = (
                         $3f, $80, $00, $00,  $3f, $80, $00, $00,  $00, $00, $00, $00,
    $BF, $80, $00, $00,  $3F, $80, $00, $00,  $00, $00, $00, $00,  $3F, $80, $00, $00,
    $BF, $80, $00, $00,  $00, $00, $00, $00,  $BF, $80, $00, $00,  $BF, $80, $00, $00,
    $00, $00, $00, $00,  $3F, $00, $00, $00,  $BF, $00, $00, $00,  $00, $00, $00, $00,
    $00, $00, $00, $00,  $3F, $00, $00, $00,  $00, $00, $00, $00,  $BF, $00, $00, $00,
    $BF, $00, $00, $00,  $00, $00, $00, $00);
:
Код: Выделить всё
PNTS{
   1.000000000E+00  1.000000000E+00  0.000000000E+00
  -1.000000000E+00  1.000000000E+00  0.000000000E+00
   1.000000000E+00 -1.000000000E+00  0.000000000E+00
  -1.000000000E+00 -1.000000000E+00  0.000000000E+00
   5.000000000E-01 -5.000000000E-01  0.000000000E+00
   0.000000000E+00  5.000000000E-01  0.000000000E+00
  -5.000000000E-01 -5.000000000E-01  0.000000000E+00
};
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 12:32:27

alexey38 писал(а):Вы пытаетесь разгадать, пытаясь заниматься хагинком высшей пробы (как заядлый хакер), но Вам придется тогда просто методом полного перебора пробовать разные сочетания типов данных на этих 12 байтах.

Нет... типы данных мне похоже заранее известны, т.к. Point это Float или Extended. Face - это набор целых чисел и т.д. В 3D сложного ничего нет. Просто мне нужно идентифицировать язык Земного программирования на мой инопланетянский язык программирования и я сразу разберусь, что к чему. Или даже точнее я уже вижу весь этот чёртов модуль на 95%. И эти 5% я сегодня завтра решу. Заодно познакомился с техникой программирования более низкого уровня. Самое смешное что, в теории я "всё это" знаю, просто никогда не сталкивался и теория не была связана с практикой.

bormant писал(а):Дайте ссылку на какой-нибудь файл обсуждаем ого формата, чтобы не изобретать велосипед.

И не нужно изобретать велосипед. Велосипед - давно уже изобрели, я просто пытаюсь его починить. Суть в том что в GLScene - работают все модули кроме этого и этот модуль уже на самом деле работает, просто я пока не понимаю как из него вынуть данные. Заодно параллельно идентифицирую как модуль работает. Узнал кучу ВАЖНЫХ вещей.

Код который Вы написали похож на код, который есть в модуле. Соответственно Вы сможете объяснить что и зачем. В частности у Вас есть функция: procedure ReverseByteOrder(var Buffer; Count: Integer); :idea: :?: Для чего вы меняете байты местами? точнее переворачиваете содержимое буфера на 180* (в модуле это тоже есть) Почему данные не записали сразу в нужном порядке? (Ещё будут вопросы, как только напечатаю)
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 12:40:52

vitaly_l писал(а):Для чего вы меняете байты местами?
Система, на которой начинали писать это дело, использовала хранение в big-endian (или net order), мой компьютер на базе процессора Intel и совместимых использует little-endian порядок.
vitaly_l писал(а):Почему данные не записали сразу в нужном порядке?
Если бы у вас была система, для которой big-endian порядок байт был бы родным, ничего "переворачивать" не пришлось бы.

http://ru.wikipedia.org/wiki/%D0%9F%D0% ... 0%BE%D0%B2

vitaly_l писал(а):Спасибо большое, добрый bormant за столь подробные объяснения и примеры
Если вдруг возникнет желание "выслать пиво" -- Яндекс деньги 4100190887290
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 13:01:11

bormant писал(а):выслать пиво

Пиво, равно как курение или наркотики - забивает и уничтожает рецепторы в нейронах мозга (синапсы). Вначале это незаметно, а потом человек превращается в полу-человека. Военные довольно часто используют это, чтобы максимально легко захватить даже самое сильное Государство. А захватив его продолжают держать население в полу-сознательном состоянии, т.к. полулюдьми - просто управлять ибо они априори слабы. На языке военных - это называется колонизация. Страна(точнее люди), которых таким образом колонизируют - даже не подозревают, что их колонизировали. И достаточно только подчинить себе верхушку. Они так поработили, почти весь мир. Раньше они занимались работорговлей, они и теперь этим занимаются; например когда увозят девушек и детей на панель. Вы всё ещё хотите пиво?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 14:04:56

vitaly_l писал(а):Вы всё ещё хотите пиво?
Да.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 14:22:38

Да? всё ещё хотите... какая жалость...
Давайте попробуем развести Вас по другому... На форуме 10 человек - которые отвечали на мои вопросы, а пиво хотите только Вы. Если я угощу Вас пивом, то остальные программисты - тоже захотят пива. В России - несколько миллионов программистов... И только один я. Угостить пивом несколько миллионов программистов - мне будет сложно... Поэтому: должно быть наоборот... Вот я пришёл... И задаю программистам вопросы... А Вы(программисты) на них отвечаете... Если я дам каждому программисту по рублю на пиво... то мне не хватит жизни чтобы расплатиться... А вот если каждый программист вышлет мне на конфеты, то я больше не буду заниматься сложным для меня программированием, а буду рисовать свои мультфильмы... И мультфильмы бесплатно - смогут посмотреть все программисты и их дети и даже пра-пра-правнуки. Поэтому я предлагаю изменить порядок оплаты, т.к. программистов миллион, а я один... И если каждый программист даст по рублю... уууу... вот мой яндекс кошелёк: 4100190887290 :P :cry:

С другой стороны у меня ещё есть вопросы и мне нужно получить на них ответы.

Вот ещё вопрос :roll: , я довольно часто встречаю код на подобии нижеприведённого:
Код: Выделить всё
  TPoint3d = packed record
    case Integer of
    0: (x, y, z: Single);
    1: (p: array [0..2] of Single);
  end;


Запись координат: x,y,z - действительно можно сделать двумя разными способами, приведенными в примере от ((c) Serg Bormant, 2013, License: GPL). Но конкретного указания при обращении к записи нет...

:?: Мне не понятно как происходит выбор между вариантом записи: 0 или 1 из приведённого выше примера. Пожалуйста - объясните? :oops: :cry:
:?: Такая же "чехарда" происходит и с функциями например FloatToStr() - там 25 функций с таким названием. Как "система" распознает к какой именно функции ей(системе) обращаться? Как выглядит код распознавания и где он в "Лазарусе"? Пожалуйста - объясните? :oops: :cry:




.

Добавлено спустя 18 минут 42 секунды:
Кстати, уважаемый bormant почему Вы здесь аскаете на пиво, если можете с лёгкостью заработать на ferrary, если займётесь делом и будете программировать программы?



.
Последний раз редактировалось vitaly_l 26.03.2013 21:51:27, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 15:08:42

vitaly_l писал(а):Вот ещё вопрос , я довольно часто встречаю код на подобии нижеприведённого:
Код: Выделить всё
  TPoint3d = packed record
    case Integer of
    0: (x, y, z: Single);
    1: (p: array [0..2] of Single);
  end;

как происходит выбор между вариантом записи: 0 или 1 из приведённого выше примера. Пожалуйста - объясните?
Укажете переменная.x -- будет вариант 0, она же в этом варианте объявлена, укажете переменная.p -- вариант 1. На самом деле это всего лишь синтаксический сахар, типы не исполняются, поэтому на самом деле никакого кода выбора нет. Компилятор по имени определяет, как именно нужно интерпретировать содержимое области памяти.

vitaly_l писал(а): Такая же "чехарда" происходит и с функциями например FloatToStr() - там 25 функций с таким названием. Как "система" распознает к какой именно функции ей(системе) обращаться?
Это называется перегрузка. А распознаёт по набору переданных аргументов. Если вспомните тему с ассемблерным листингом, увидите, что аргументы также участвуют в формировании конечного имени (что позволяет получить несколько функций с общим родовым именем). Если объявить в программе:
function FloatToStr(V: Single): string;
function FloatToStr(V: Double): string;
реальные их имена в коде будут вроде:
P$PROGRAM_FLOATTOSTR$SINGLE$$SHORTSTRING
P$PROGRAM_FLOATTOSTR$DOUBLE$$SHORTSTRING
Плюс, в оределённый момент отрабатывает автоматическая конвертация типов, если объявить
function FloatToStr(V: Extended): string;
и позвать её, передав аргумент типа Single, при отсутствии более подходящей функции будет вызвана наша, параметр предварительно будет преобразован к Extended в месте вызова.

vitaly_l писал(а):если займётесь делом и будете программировать программы?
Ведь тогда у меня на вас времени совсем не останется, а нам бы этого не хотелось, верно?
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 15:38:38

bormant писал(а):Ведь тогда у меня на вас времени совсем не останется, а нам бы этого не хотелось, верно?

Нам?... бы этого не хотелось, верно?...
Нам бы хотелось, чтобы те кто отвечает на вопросы - делали это в свободное время и это никоим образом бы не сказывалось на их личных, а тем более финансовых вопросах. С другой стороны мы(художники) знаем что, аскание (попрошайничество), в таком виде как здесь - может нанести сильный вред, т.к. просящий попадает под определённое влияние. В психологии это влияние называется комплекс. Со своей стороны мы просто проверили насколько он(комплекс) сильный, т.к. избавиться от комплексов - очень сложно. Однако Вы теперь знаете, и если комплекс есть, то Вы с ним сами справитесь, т.к. внешними силами комплексы победить невозможно, до тех пор пока не придёт личное: осознание, понимание и ясность мышления. Так что теперь мы квиты. Вы дали мне информацию, а я дал информацию Вам. Согласны?

И действительно большое спасибо Вам и всем кто отвечал на мои вопросы - за ваши подробные и понятные ответы, т.к. ответы всех - очень сильно помогли мне понять как работает поломавшийся "чёртов" модуль.

Код: Выделить всё

function GetChunkClasses: TList;
begin
  if ChunkClasses=nil then
    ChunkClasses:=TList.Create;
  result:=ChunkClasses;
end;   



Вся нужная информация храниться там в ChunkClasses... там и точки и полигоны и нормали. Но этот ChunkClasses, внутренний т.к. объявлен как var ChunkClasses: TList; в блоке implementation... Правда непонятно как информация из него проходила в Public... Однако, если я прав, то чёртов модуль теперь заведётся...



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение debi12345 » 26.03.2013 15:52:20

В психологии это влияние называется комплекс. Со своей стороны мы просто проверили насколько он(комплекс) сильный, т.к. избавиться от комплексов - очень сложно. Однако Вы теперь знаете, и если комплекс есть, то Вы с ним сами справитесь, т.к. внешними силами комплексы победить невозможно, до тех пор пока не придёт личное: осознание, понимание и ясность мышления. Так что теперь мы квиты. Вы дали мне информацию, а я дал информацию Вам. Согласны?
Философия высшей пробы :) Снимаю крышку с кипящей башки и с прискорбием осознаю свое интелектуальное ничтожество.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение vitaly_l » 26.03.2013 16:16:04

debi12345 писал(а):Философия высшей пробы Снимаю крышку с кипящей башки и с прискорбием осознаю свое интелектуальное ничтожество.

Если в башке ещё что-то кипит, значит до ничтожества Вам ещё очень далеко... Но когда Вы так говорите (осознаю свое интелектуальное ничтожество), а тем более думаете... Это наносит ещё более сильный вред чем аскание - поэтому мы и с Вами квиты, т.к. это тоже комплекс, который можно победить только Вашими силами. Однако Вы теперь знаете, и если комплекс есть, то Вы с ним сами справитесь, т.к. внешними силами комплексы победить невозможно, до тех пор пока не придёт личное: осознание, понимание и ясность мышления. Согласны?

:?: В Лазарусе есть возможность смотреть Hex код вот так?:
номер ячейки?__|________содержимое ячейки___________|___ANSI
00000001______ |_0000504F 4C530000 00180004 00010000_|_..POLS..........



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Stream - не знаю как вывести data, нужна консультация

Сообщение bormant » 26.03.2013 17:30:39

Номер ячейки -- адрес памяти. Содержимое ячейки -- один байт (2 16-ричные цифры).
А "0000504F 4C530000 00180004 00010000" -- это 16 байт.
Ещё в Turbo Pascal-е такая возможность была в окнах Watch и Evaluate. Установите в окне Memory dump отображение содержимого Chunk.Data^.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Пред.След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru