Ir al contenido


Foto

[RESUELTO] Validar un Null en conversion de tipo


  • Por favor identifícate para responder
6 respuestas en este tema

#1 FGarcia

FGarcia

    Advanced Member

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

Escrito 11 septiembre 2010 - 02:18

: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 mensajes
  • LocationEspaña

Escrito 11 septiembre 2010 - 02:59

Buenas,

Prueba a hacer una comparación con TryStrToInt ;)

Nos leemos

  • 0

#3 FGarcia

FGarcia

    Advanced Member

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

Escrito 11 septiembre 2010 - 05:02

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
  • 1.259 mensajes
  • LocationEspaña

Escrito 11 septiembre 2010 - 05:33

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 mensajes
  • LocationMéxico

Escrito 12 septiembre 2010 - 01:08

OK, todo solucionado y aprendiendo cosas nuevas!
  • 0

#6 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 13 septiembre 2010 - 02:30

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 mensajes
  • LocationMéxico

Escrito 13 septiembre 2010 - 02:41

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

Gracias!
  • 0




IP.Board spam blocked by CleanTalk.