FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Interpreto mal TryStrToInt?
Estoy leyendo un fichero XML de recibos domiciliados. En un de los nodos está el número de recibos que se uncluyen en el fichero:
Cita:
Código:
iNode3 = iNode2->ChildNodes->FindNode("NbOfTxs"); if (iNode3 == NULL || !TryStrToInt(iNode3->Text, fForBln->Barra->MaxValue)) continue; Código:
fForBln->Barra->MaxValue = StrToInt(iNode3->Text); |
#2
|
||||
|
||||
Si he entendido bien sobra el '!', ya que devuelve true o false si ha podido, o no, convertir el texto en integer.
Cita:
|
#3
|
||||
|
||||
Yo creo que no sobra porque además de hacer la conversión hay que evaluar si se ha hecho. Es parecido, entiendo yo, a StrToIntDef:
Código:
if (iNode3 == NULL || StrToIntDef(iNode3->Text, 0) < 1) continue; |
#4
|
||||
|
||||
Ponlo entre paréntesis (!StrToIntDef(iNode3->Text, 0)), o prueba solo por separado cada comparación para comprobar qué falla.
|
#5
|
||||
|
||||
Ten en cuenta que el entero que pasas es una referencia por lo que al intentar con propiedades de componentes VCL tendrás problemas de asignación. Una una variable de tipo int intermedia.
Código:
bool __fastcall TryStrToInt(const System::UnicodeString S, int &Value); Saludos. |
#6
|
||||
|
||||
Efectivamente esa es la solución. Gracias a los dos por la ayuda.
|
|
|
|