private static void Main(string[] args) { if (args.Length < 2) { Console.Error.WriteLine("Error, no has indicado suficientes parámetros."); Console.Error.WriteLine("El formato es el siguiente: ExtraerEntidadesDeArchivos [archivo .bin a generar] [codigo 1]...[código n]."); return; } var di = new DirectoryInfo(Directory.GetCurrentDirectory()); var archivos = di.GetFiles("*.bind"); using (var archivoSalida = new BinDouble(args[0])) { foreach (var archivo in archivos) { using (var archivoEntrada = new BinDouble(archivo.Name)) { Console.WriteLine($"Analizando el archivo: {archivo.Name}"); var entidades = from entidad in archivoEntrada where entidad.TieneAlgúnCódigo(args.Skip(1)) select entidad; foreach (var entidad in entidades) { archivoSalida.Add(entidad.Clone()); } } } } }
private static void Main(string[] args) { if (args.Length < 4) { Console.Error.WriteLine("Error: No se han especificado parámetros."); Console.Error.WriteLine("El formato es: EliminaCodigoDeArchivoBin.exe [tabla de códigos] [archivo de entrada] [archivo de salida] [código a eliminar]"); Console.Error.WriteLine("Ejemplo: EliminaCodigoDeArchivoBin.exe digiBCA.Tab.xml 29091711.bin salida.bin 201"); return; } try { using (var archivoEntrada = new BinDouble(args[1])) { using (var archivoSalida = new BinDouble(args[2], false)) { foreach (var entidad in archivoEntrada) { var clonada = entidad.Clone(); // Eliminamos todos los códigos de la entidad clonada clonada.Codes.Clear(); // Añadimos únicamente los códigos cuyo nombre no coincida con el pasado por parámetros foreach (var código in entidad.Codes) { if (código.Name == args[3]) { continue; } clonada.Codes.Add(código); } if (entidad.Codes.Count == 0) { continue; // No almacenamos la entidad, pues al quitarle el código indicado por parámetros se ha quedado sin códigos. Era el único que tenía. } archivoSalida.Add(clonada); Console.Write("*"); } } } } catch (Exception excepción) { Console.Error.WriteLine("Se localizó el siguiente error:"); Console.Error.WriteLine(excepción.Message); } }
private static void TransformaArchivo(string[] args) { try { ConicSensor sensorOriginal = new ConicSensor(); sensorOriginal.Load(args[0], args[2], false); ConicSensor sensorNuevo = new ConicSensor(); sensorNuevo.Load(args[1], args[2], false); double paralajeAlarma = double.Parse(args[5]); using (BinDouble archivoOriginal = new BinDouble(args[3])) { using (BinDouble archivoNuevo = new BinDouble(args[4], 0, true, true)) { int índiceEntidad = 0; foreach (var entidad in archivoOriginal) { double paralajeEntidad; var entidadTransformada = Transforma(sensorOriginal, sensorNuevo, entidad, out paralajeEntidad); archivoNuevo.Add(entidadTransformada); if (Math.Abs(paralajeEntidad) >= paralajeAlarma) { Console.WriteLine(string.Format("{0}\t{1}"), índiceEntidad, paralajeEntidad); } } } } Console.ReadLine(); } catch (Exception e) { Console.WriteLine(e.Message); } }