El formato de la cadena de entrada es incorrecto.
ResueltoUsuario anónimo -
Estoy tratando un archivo gedcom (archivo editable con el bloc de notas) para convertirlo en datos SQL. Leo las líneas del archivo y divido la información en diferentes tablas. Una de estas tablas acepta un cierto número de entradas antes de darme el error: El formato de la cadena de entrada es incorrecto.
// lectura de una línea del gedcom string gedCol1 = ((GedCom)lstGed.Items[i]).colNo1; string gedCol2 = ((GedCom)lstGed.Items[i]).colNo2; string gedCol3 = ((GedCom)lstGed.Items[i]).colNo3; else if(gedCol2 == "NOTE") { gedType = "NOTE"; ajoutNote(gedCol3, lstInIndi); } public void ajoutNote(string note, string numberIndi) { MessageBox.Show("Entrada: " + note); bool strTrouve = false; int j = 0; if(lstDeNote.Items.Count > 0) { /* inicialización de la búsqueda */ string l4col1 = ((Note)lstDeNote.Items[j]).numNote; string l4col2 = ((Note)lstDeNote.Items[j]).numIndi; for (j = 0; j < lstDeNote.Items.Count; j++) { /* Recorrer toda la lista para encontrar el mismo número de individuo si se encuentra, añado la * nota adicional a la nota existente y salgo del bucle */ if (string.Equals(l4col2, numberIndi)) { strTrouve = true; ((Note)lstDeNote.Items[j]).txtNote = ((Note)lstDeNote.Items[j]).txtNote + note; return; } /* Inicializa la siguiente búsqueda */ l4col1 = ((Note)lstDeNote.Items[j]).numNote; l4col2 = ((Note)lstDeNote.Items[j]).numIndi; } /* Si la búsqueda terminó y no se encontró nota, inserta el nuevo */ if (strTrouve == false) { l4col1 = (j + 1).ToString(); //MessageBox.Show("Nota encontrada: " + l4col1 + " : " + note); lstDeNote.Items.Add(new Note { numNote = l4col1, numIndi = numberIndi, txtNote = note }); return; } } else { /* Si no se encontró ninguna nota en la lista, inserta la nueva */ if(strTrouve == false) { lstDeNote.Items.Add(new Note { numNote = "1", numIndi = numberIndi, txtNote = note }); } } }
- Se requiere una referencia de objeto
- ¿Cómo se llaman las máquinas que detectan los precios de los productos?
- Modificar el texto de un textbox en Visual Studio
- error visual studio No se puede cargar el archivo o la asamblea
- La referencia de objeto no está establecida en una instancia de objeto.
- Calcular los registros de un datagridview uno a uno
4 respuestas
Hola,
'una de estas tablas acepta un cierto número de entradas antes de darme el error: El formato de la cadena de entrada es incorrecto.
Y.. ¿has intentado determinar en qué línea de tu archivo se encontraba el problema? ¿cuál es ese dato en "mal" formato?
.
Atentamente,
Jordane
Buenas noches
// lectura de una línea del gedcom string gedCol1 = ((GedCom)lstGed.Items[i]).colNo1; string gedCol2 = ((GedCom)lstGed.Items[i]).colNo2; string gedCol3 = ((GedCom)lstGed.Items[i]).colNo3; else if(gedCol2 == "NOTE") { gedType = "NOTE"; ajoutNote(gedCol3, lstInIndi); } ¿Por qué, aunque manifestamente, la lista lstGed contiene instancias de una clase llamada GedCom, con propiedades que corresponden a columnas, copias los valores en strings para luego comprobar su valor en un else if (sin if antes...)?
Me parece absurdo.
¿No sería esto más lógico?
// lectura de una línea del gedcom GedCom laLigne = (GedCom)lstGed.Items[i]); if(laLigne.colNo2 == "NOTE") { gedType = "NOTE"; ajoutNote(laLigne.colNo3, lstInIndi); } Además, usas un listbox (o otro control de este tipo) para almacenar tus datos, es una mala práctica.
Tus datos deberían almacenarse en colecciones (list<T> por ejemplo) y los controles solo deberían servir para la visualización (por el binding, por ejemplo)
Y así, si tuvieras colecciones, podrías hacer consultas linq lo que es tanto más simple de codificar como más rápido en ejecución para encontrar al individuo al que debes agregar una nota.
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns
Está bien.
Pero ves, en los fragmentos de código que has publicado, no se ve cómo se lee esta línea en el archivo ni cómo se envía a SQL.
Y para tener una idea de comparación, un ejemplo de una línea que funcione también sería bueno.
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns