using System; using System.Collections.Generic; using System.IO; namespace pro_example { class Program { static void Main(string[] args) { List records = new List(); // Please note that this example is *not* meant // to be optimized, but rather, meant to illustarte // the 26 byte format of the PRO format. String filename = "IBM.PRO"; byte[] data = File.ReadAllBytes(filename); int recordCount = data.Length / 26; System.Console.WriteLine("Reading " + recordCount + " record(s) from " + filename); System.IO.BinaryReader reader = new BinaryReader(new System.IO.MemoryStream(data)); for (int i = 0; i < recordCount; i++) { CRBDataPoint di = new CRBDataPoint(); di.Date = DateTime.FromOADate((double)(reader.ReadInt16() + 30316)); di.Open = reader.ReadSingle(); di.High = reader.ReadSingle(); di.Low = reader.ReadSingle(); di.Close = reader.ReadSingle(); di.Volume = (int)reader.ReadSingle(); di.OpenInterest = (int)reader.ReadSingle(); records.Add(di); System.Console.WriteLine(di.ToXmlString()); } System.Console.WriteLine("There are " + records.Count + " CRBDataPoint record(s)."); } } class CRBDataPoint { private DateTime _date = DateTime.MinValue; private float _open = 0.0f; private float _high = 0.0f; private float _low = 0.0f; private float _close = 0.0f; private long _volume = 0L; private long _openInterest = 0L; public float Close { get { return _close; } set { _close = value; } } public DateTime Date { get { return _date; } set { _date = value; } } public float High { get { return _high; } set { _high= value; } } public float Low { get { return _low; } set { _low = value; } } public float Open { get { return _open; } set { _open = value; } } public long OpenInterest { get { return _openInterest; } set { _openInterest = value; } } public long Volume { get { return _volume; } set { _volume = value; } } public String ToXmlString() { return ""; } } }