public bool ReadDat(string fullname, out DatHeader rvDat) { rvDat = null; System.Diagnostics.Debug.WriteLine("Reading : " + fullname); StreamReader myfile = File.OpenText(fullname, Enc); string strLine = null; while (string.IsNullOrWhiteSpace(strLine) && !myfile.EndOfStream) { strLine = myfile.ReadLine(); } myfile.Close(); if (strLine == null) { return(false); } if (strLine.ToLower().IndexOf("xml", StringComparison.Ordinal) >= 0) { if (!ReadXMLDat(fullname, out rvDat)) { return(false); } } else if ((strLine.ToLower().IndexOf("clrmamepro", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("clrmame", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("romvault", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("game", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("machine", StringComparison.Ordinal) >= 0)) { DatCmpReader dcr = new DatCmpReader(ErrorReport); if (!dcr.ReadDat(fullname, out rvDat)) { return(false); } } else if (strLine.ToLower().IndexOf("doscenter", StringComparison.Ordinal) >= 0) { DatDOSReader ddr = new DatDOSReader(ErrorReport); if (!ddr.ReadDat(fullname, out rvDat)) { return(false); } } else if (strLine.ToLower().IndexOf("[credits]", StringComparison.Ordinal) >= 0) { DatROMCenterReader drcr = new DatROMCenterReader(ErrorReport); if (!drcr.ReadDat(fullname, out rvDat)) { return(false); } } else { ErrorReport?.Invoke(fullname, "Invalid DAT File"); return(false); } return(true); }