Jump to content


Photo

[RESUELTO] Validar un Null en conversion de tipo


  • Please log in to reply
6 replies to this topic

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 11 September 2010 - 02:18 PM

:D

Esta mafufo el titulo!

es simple estoy haciendo algo como esto:



delphi
  1. for i := 2 to 9 do
  2.                 cuenta := cuenta + StrToInt(StringGrid1.Cells[1,i]);
  3.               StringGrid1.cells[1,10] := IntToStr(cuenta);



sin embargo me genera un error si el valor de la celda del string grid es una cadena vacia (Null) ¿Como deberia validarlo/corregirlo? para evitar el error

Es sabado

zzzzzzz NO! mejor  (b) (b) (b) (b) (b) (b) (b)
  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 11 September 2010 - 02:59 PM

Buenas,

Prueba a hacer una comparación con TryStrToInt ;)

Nos leemos

  • 0

#3 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 11 September 2010 - 05:02 PM

Probe y el compilador me dice que:

"No existe una version de TryStrToInt que pueda ser llamada de esa manera"



delphi
  1. TryStrToInt(StringGrid1.cells[4,i],0)



asi que hice algo como esto:



delphi
  1. if StringGrid1.Cells[4,i] <> ''  then
  2.   cuenta := cuenta + StrToInt(StringGrid1.Cells[4,i])
  3. else
  4.   cuenta := cuenta + 0;



y funciono  :D

Ahora dentro de ese mismo codigo hago otra, en el StringGrid coloco un valor formateado asi:

9,456.98


cuando intento hacer la conversion de StrToFloat me dice que el valor no es valido como flotante, supongo que eso es por el separador de millares ¿ahi que se hace?

saludos
  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 11 September 2010 - 05:33 PM

Vamos por partes, en el primer caso creo que lo que buscas es:


delphi
  1.   cuenta:= StrToIntDef(StringGrid1.Cells[4,i],0);



Aunque como ya te dijeron también puedes hacer esto:


delphi
  1. if not TryStrToInt(StringGrid1.Cells[4,i],cuenta) then
  2.   Cuenta:= 0;



Lo mismo para el float:


delphi
  1.   Valor:= StrToFloatDef(StringGrid1.Cells[4,i],0.0);



Incluso también puedes hacer esto:


delphi
  1.   if not TryStrToFloat(StringGrid1.Cells[4,i],Valor) then
  2.     Valor:= 0.0;



Y con respecto al separado decimal, puedes probar algo como esto:


delphi
  1. var
  2.   i: integer;
  3.   Str: String;
  4.   FormatSettings: TFormatSettings;
  5. begin
  6.   Str:= '9,456.98';
  7.   GetLocaleFormatSettings(GetThreadLocale,FormatSettings);
  8.   FormatSettings.DecimalSeparator:= '.';
  9.   for i:= Length(Str) downto 1 do
  10.     if not (Str[i] in ['0'..'9','-','.']) then
  11.       Delete(Str,i,1);
  12.   ShowMessage(FloatToStr(StrToFloatDef(Str,0.0,FormatSettings)));
  13. end;




  • 0

#5 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 12 September 2010 - 01:08 PM

OK, todo solucionado y aprendiendo cosas nuevas!
  • 0

#6 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 13 September 2010 - 02:30 PM

Saludos.

Un poco tarde pero tienes esta posibilidad también:


delphi
  1. If VarIsNull() then


  • 0

#7 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 13 September 2010 - 02:41 PM

Nunca es tarde, siempre se aceptan nuevas sugerencias. Ademas siempre se aprende algo nuevo.

Gracias!
  • 0




IP.Board spam blocked by CleanTalk.