private void writeToFileStream(RecEmaster rec) { byte[] buffer = new byte[RecEmasterSize]; GCHandle gcHandle = GCHandle.Alloc((object)buffer, GCHandleType.Pinned); Marshal.StructureToPtr((object)rec, gcHandle.AddrOfPinnedObject(), true); msg.Fs2.Write(buffer, 0, RecEmasterSize); gcHandle.Free(); }
private void readFromFileStream(ref RecEmaster rec) { byte[] buffer = new byte[RecEmasterSize]; int offset = 0; while (offset < buffer.Length) { offset += msg.Fs2.Read(buffer, offset, buffer.Length - offset); } GCHandle gcHandle = GCHandle.Alloc((object)buffer, GCHandleType.Pinned); rec = (RecEmaster)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(RecEmaster)); gcHandle.Free(); }
public void Put() { if (FileNo > (ushort)byte.MaxValue) { XmRec = true; Xmstr = new RecXmaster(); Xmstr.fi = Sym01.PadRight(15, char.MinValue).ToCharArray(); Xmstr.fn = MsName.PadRight(46, char.MinValue).ToCharArray(); Xmstr.fd01 = CalFunc.Jd2cymd(Fjd); Xmstr.fd02 = Xmstr.fd01; Xmstr.ld = CalFunc.Jd2cymd(Ljd); Xmstr.rn = FileNo; } else { Mstr = new RecMaster(); Emstr = new RecEmaster(); int num = MsName.Length > 16 ? 1 : 0; string str1 = Sym01.PadRight(16, char.MinValue); string str2 = MsName.PadRight(17, char.MinValue); str1.CopyTo(0, Mstr.fi, 0, 16); str2.CopyTo(0, Mstr.fn, 0, 16); str1.CopyTo(0, Emstr.sym01, 0, 15); str2.CopyTo(0, Emstr.fn, 0, 17); if (num != 0) { MsName.PadRight(45, char.MinValue).CopyTo(0, Emstr.xFn, 0, 45); } else { string.Empty.PadRight(45, char.MinValue).CopyTo(0, Emstr.xFn, 0, 45); } Mstr.entNo = (byte)FileNo; Emstr.rn = (ushort)(byte)FileNo; Mstr.d1 = ieee2ms((float)CalFunc.Jd2MsDate(Fjd)); Mstr.d2 = ieee2ms((float)CalFunc.Jd2MsDate(Ljd)); Emstr.fd = CalFunc.Jd2cymd(Fjd); Emstr.d1 = CalFunc.Jd2MsDate(Fjd); Emstr.d2 = CalFunc.Jd2MsDate(Ljd); } }
public void Init() { Mstr = new RecMaster(); Emstr = new RecEmaster(); Xmstr = new RecXmaster(); }