дано:
- Код: Выделить всё
- type
 AAB=array [0..65535] of byte;
 PAAB=^AAB;
 const
 HD: array [0..$F] of char = '0123456789ABCDEF';
 var
 FData : Pointer;
В память с указателем FData - из TStream, считываются и заменяются разные данные с разным объёмом и содержимым из одного файла;
Задача: нужно их декодировать.
1) Если вывести for i:=0 to DataSize do TMemo.Add(HD[PPD^ shr 4]+HD[PPD^[i] and $F]);, то в TMemo заносится всё содержимое FData и там есть все данные которые нужны. Задача: нужно их декодировать. Но данные не подвержены, какой-то стабильной структуре и в зависимости от содержимого структура FData меняется. По сути там записаны примерно такие данные:
"DAT1" = 12;
"DAT2" = 12.12341234;
"DAT3" = ''привет';
"DAT4" = (1)|(3)|(5);
"DAT5" = DAT8 := любой из "DAT1"..."DAT7";
"DAT6" = (11.1234)|(2.45634)|(5.3576);
"DAT7" = FSubData; // ещё одна FData в которой лежат array of "DAT1", "DAT2", "DAT3", "DAT4", "DAT5" итд
Задача: Нужно вывести: var dat1 := его значение; var dat2 := его значение; var dat3 := его значение; итд
При этом "DAT1"..."DAT7" - не обязательно имеют такой порядок и необязательно могут быть все... (могут быть только "DAT1" и "DAT5")...
2) Если вывести TMemo.Add(PChar(FData)); то выводится первые четыре буквы из FData, на подобии "DAT1", "DAT2" или "DAT3" итп.
 Вопрос: Правильно ли я понимаю, что после первых четырёх символов стоит "#0" и поэтому PChar(FData) выводит только первые 4 буквы?
 Вопрос: Правильно ли я понимаю, что после первых четырёх символов стоит "#0" и поэтому PChar(FData) выводит только первые 4 буквы?При этом, если сделать if (PChar(FData) = "DAT3") then ShowMessage('DAT3');, то ничего не будет, хотя в TMemo "DAT3" - запишется.
 Почему так?
 Почему так?   Или "#0" стоит после ещё каких-то символов, поэтому PChar(FData) не равно "DAT3"?
 Или "#0" стоит после ещё каких-то символов, поэтому PChar(FData) не равно "DAT3"?Вопросы:
 Существуют ли, стандартные схемы чтения и декодирования таких данных или это всегда согласовывается в SDK?
 Существуют ли, стандартные схемы чтения и декодирования таких данных или это всегда согласовывается в SDK?  Как правильно узнавать объём памяти зарезервированный указателем FData?
 Как правильно узнавать объём памяти зарезервированный указателем FData? Как правильно читать память с указателем FData не с первого символа, а например с 12?
 Как правильно читать память с указателем FData не с первого символа, а например с 12? Как правильно узнавать длину кусочка FData от 12 символа и до знака "#0"? (Если я правильно понимаю в FData может быть много "#0" ?)
 Как правильно узнавать длину кусочка FData от 12 символа и до знака "#0"? (Если я правильно понимаю в FData может быть много "#0" ?) Можно ли указатель FData разбить на много под-указателей на подобии FDataDAT1^, FDataDAT2^, FDataDAT3^ и т.д. в соответствии с разделением по "#0", если оно существует или в соответствии с делением на: "DAT1", "DAT2" или "DAT3" итп.?
 Можно ли указатель FData разбить на много под-указателей на подобии FDataDAT1^, FDataDAT2^, FDataDAT3^ и т.д. в соответствии с разделением по "#0", если оно существует или в соответствии с делением на: "DAT1", "DAT2" или "DAT3" итп.? Любая дополнительная информация востребована.
 Любая дополнительная информация востребована.PS: [i]Заранее благодарен за любой информативный ответ.
.





 
  
   
  
  
  