Чтение области памяти и определение типа данных

Тема в разделе "Delphi - Система", создана пользователем _DeMiUrG_, 26 окт 2007.

Статус темы:
Закрыта.
  1. _DeMiUrG_

    _DeMiUrG_ Гость

    Я читаю область памяти функцией BlockRead(F,DynArray,sizeof(DynArray))
    DynArray обьявляю как массив данных типа Byte

    у меня некоторые значения Byte
    а некотороые Integer или Float

    как перевести значения области памяти Byte
    в числа Integer Float ?
     
  2. zubr

    zubr Гость

    Код (Text):
    var
    i, k:Integer;

    begin
    k:=0;
    For i:=5 to 8 do
    k:=k shl 8 +DynArray[i];
    end;
     
  3. Silver Wind

    Silver Wind Гость

    Для float, например, так можно:
    Код (Text):
    type
    float = single;

    floatbyte = record
    Case boolean of
    True:(f:float);
    False:(b:array[0..3] of byte);
    end;

    function ExtractFloatValue(Buf: array of byte; FromByte: Integer): float;
    var fb:floatbyte;
    begin
    fb.b[0]:=Buf[FromByte+0];
    fb.b[1]:=Buf[FromByte+1];
    fb.b[2]:=Buf[FromByte+2];
    fb.b[3]:=Buf[FromByte+3];
    Result:=fb.f;
    end;
    P.S. Только порядок следования байт в float нужно уточнить, может там перестановка байт нужна 0<->3 и 1<->2.
     
  4. _DeMiUrG_

    _DeMiUrG_ Гость

    спс буду пробовать
     
  5. _DeMiUrG_

    _DeMiUrG_ Гость

    пришел к варианту с функцией CopyMemory
    те есть обьявлен DynArray

    потом идет считывание из файла

    BlockRead(F,DynArray,sizeof(DynArray));


    далее я пытаюсь присвоить значения функцией
    CopyMemory(@XX,@DynArray,4);
    и в этом месте компилятор ругается
    чтото на обращение к памяти
    что посоветуйте?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей