private void createRecord(Storage.Database db, IWaypointData data) { using (MemoryStream ms = new MemoryStream(DataBuffer)) using (BinaryWriter bw = new BinaryWriter(ms)) { ms.Position = 0; ms.Position = 150; bw.Write(Utils.Conversion.DateTimeToLong(data.DataFromDate)); //150 bw.Write((bool)(data.Lat != null)); //158 bw.Write(data.Lat == null ? (double)0.0 : (double)data.Lat); //159 bw.Write((bool)(data.Lon != null)); //167 bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168 bw.Write(Utils.Conversion.DateTimeToLong(data.Time)); //176 bw.Write(data.WPType.ID); //184 //spare ms.Position = 200; bw.Write(data.GeocacheCode); ms.Position = 240; bw.Write(data.Code ?? ""); ms.Position = 280; bw.Write(GetSafeString(280, 500, data.Description) ?? ""); ms.Position = 500; bw.Write(GetSafeString(500, 600, data.Name) ?? ""); ms.Position = 600; bw.Write(data.Url ?? ""); ms.Position = 700; bw.Write(data.UrlName ?? ""); ms.Position = 800; bw.Write(data.Comment ?? ""); RecordInfo = db.RequestWaypointRecord(data.ID, data.GeocacheCode, DataBuffer, ms.Position, 100); } }
//new record to be stored public Waypoint(Storage.Database db, IWaypointData data) : base(null) { _id = data.ID; using (MemoryStream ms = new MemoryStream(_buffer)) using (BinaryWriter bw = new BinaryWriter(ms)) { ms.Position = 0; //todo: add string length checks!!! ms.Position = 150; bw.Write(data.DataFromDate.ToFileTime()); //150 bw.Write((bool)(data.Lat!=null)); //158 bw.Write(data.Lat==null ? (double)0.0: (double)data.Lat); //159 bw.Write((bool)(data.Lon != null)); //167 bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168 bw.Write(data.Time.ToFileTime()); //176 bw.Write(data.WPType.ID); //188 //spare ms.Position = 200; bw.Write(data.GeocacheCode); ms.Position = 240; bw.Write(data.Code); ms.Position = 280; bw.Write(data.Description); ms.Position = 500; bw.Write(data.Name); ms.Position = 600; bw.Write(data.Url); ms.Position = 700; bw.Write(data.UrlName); ms.Position = 800; bw.Write(data.Comment); RecordInfo = db.RequestWaypointRecord(data.ID, _buffer, ms.Position, 100); } db.WaypointCollection.Add(this); }