Показать сообщение отдельно
  #1  
Старый 13.12.2012, 01:52
nicht nicht вне форума
Прохожий
 
Регистрация: 18.05.2011
Сообщения: 17
Репутация: 12
По умолчанию Проблема с трансляцией из С++ в Делфи

Здравствуйте.
Помогите перевести код из С++ в делфи. Привожу часть кода:
Код:
float read_flt_le(istream &f)
{ 
return read_le<float>(f); 
}

// read little-endian number from f and return equivalent in host endianess
template<typename T>
T read_le(istream &f)
{
    T val;
    my_read(f, reinterpret_cast<char*>(&val), sizeof(val));
    le_to_host(&val, sizeof(val));
    return val;
}

void my_read(istream &f, char *buf, int len)
{
    f.read(buf, len);
    cout << buf << endl;
    if (f.gcount() < len) {
        throw FormatError("unexpected eof");
    }
}

void le_to_host(void *, int)
{}
Здесь файл читается в поток, и из него идет считывание нужных данных.
Чтение делаю с помощью
Код:
BlockRead()
с чтением целых чисел и строк все нормально идет, загвоздка только с функцией
Код:
float read_flt_le(istream &f)
. Пробовал читать как Single:
Код:
var
ofi: file;
Real4: Single;
NumRead: integer;
Begin
...
BlockRead(ofi, real4, SizeOf(Real4), NumRead);
...
Но получаю неверные значения. Подозреваю, что дело в
Код:
template<typename T>
Подскажите, как правильно сконвертировать в Делфи
Ответить с цитированием