Чтение и запись массива в бинарный файл C#

697
29 декабря 2016, 06:05

Всем доброго времени суток, есть бинарный файл, в который пишет программка написанная на С++ Builder, и которую мне нужно переписать. Столкнулся с проблемой чтения и записи массива.
Ниже код на С#:

using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
{
    // пока не достигнут конец файла
    // считываем каждое значение из файла
    while (reader.PeekChar() > -1)
    {
        int nk = reader.ReadInt32();
        int N_vn = reader.ReadInt32();
        int N_vv = reader.ReadInt32();
        float d_vn = reader.ReadSingle();
        float d_vv = reader.ReadSingle();
        double t_n = reader.ReadDouble();
        double t_k = reader.ReadDouble();
        float L = reader.ReadSingle();
        float P = reader.ReadSingle();
        float Pm = reader.ReadSingle();
        float Pp = reader.ReadSingle();
        float kal_n = reader.ReadSingle();
        float kal_v = reader.ReadSingle();
        float res_v = reader.ReadSingle();
       // float frez = reader.ReadSingle(); массив 
       // int irez = reader.ReadInt32(); массив
    }
}

А вот код структуры написанный на Builder'e

typedef struct {
    int nk;                 
    int N_vn,N_vv;         
    float d_vn,d_vv;        
    TDateTime t_n;       
    TDateTime t_k;          
    float L;                
    float P,Pm,Pp;         
    float kal_n,kal_v;     
    float res_v;            
    float frez[4];         
    int irez[4];           
} str_pereval;          

Помогите пожалуйста разобраться, спасибо

Answer 1

Всем спасибо решил проблему так:

float[] frez = new float[5];
int[] irez = new int[5];
using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
{
    // пока не достигнут конец файла
    // считываем каждое значение из файла
    while (reader.PeekChar() > -1)
    {
        int nk = reader.ReadInt32();
        int N_vn = reader.ReadInt32();
        int N_vv = reader.ReadInt32();
        float d_vn = reader.ReadSingle();
        float d_vv = reader.ReadSingle();
        double t_n = reader.ReadDouble();
        double t_k = reader.ReadDouble();
        float L = reader.ReadSingle();
        float P = reader.ReadSingle();
        float Pm = reader.ReadSingle();
        float Pp = reader.ReadSingle();
        float kal_n = reader.ReadSingle();
        float kal_v = reader.ReadSingle();
        float res_v = reader.ReadSingle();
        for (int i = 0; i <= 4; i++)
        {
            frez[i] = reader.ReadSingle();
            irez[i] = reader.ReadInt32();
        }
        Console.WriteLine("Номер: {0}  Номер верхнего: {1}  Номер нижнего {2}", nk, N_vv, N_vn);
    }
    Console.ReadKey();
}
READ ALSO
Печать отчёта из XML

Печать отчёта из XML

Доброго времени суток

414
Групповые делегаты

Групповые делегаты

Увидел данный пример и стало интересноКак в данном случае отрабатывает удаление делегата

461
Преобразование Double к DateTime

Преобразование Double к DateTime

Всем доброго времени суток, помогите пожалуйста разобраться, есть бинарный файл с которого я читаю значения файла, и мне нужно преобразовать...

779
Как скачать всё, что находится в div?

Как скачать всё, что находится в div?

ИСПОЛЬЗУЕТСЯ: WebDriver, С#

497