149
IntInData(Nodes[i].y);
StrInData(Nodes[i].name);
int L2 = 0;
if (Nodes[i].Edge != null)
L2 = Nodes[i].Edge.Length;
IntInData(L2);
for (int j = 0; j <= L2 - 1; j++)
{
IntInData(Nodes[i].Edge[j].A);
IntInData(Nodes[i].Edge[j].x1c);
IntInData(Nodes[i].Edge[j].x2c);
IntInData(Nodes[i].Edge[j].yc);
IntInData(Nodes[i].Edge[j].numNode);
}
}
aFile.Write(byData, 0, N);
aFile.Close();
}
Для записи потребовалось три вспомогательных метода.
Первый
LengthFile
() предназначен для вычисления
длины байтового массива, в
который поместятся все данные о массиве:
Листинг 5.13. Вычисление длины байтового массива
protected int LengthFile() //
вычислить размер фай-
ла
{
int n = 4;
int L1 = Nodes.Length;
for (int i=0; i<=L1-1; i++)
{
11 / 23
150
n += 16+4*Nodes[i].name.Length;
int L2=0;
if (Nodes[i].Edge != null)
L2 = Nodes[i].Edge.Length;
n += L2 * 20;
}
return n;
}
Второй метод перемещает переменную
целого значения в байтовый
массив и сдвигает смещение
ofs на 4:
Do'stlaringiz bilan baham: