Jump to content


Photo

Problema cargar datos vacíos en una propiedad TSTrings


  • Please log in to reply
8 replies to this topic

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 12 July 2016 - 01:48 PM

Tengo una propiedad de tipo TSTrings lo cual intento cargar algún dato desde la base de datos, el problema surge si el dato es nulo o una cadena vacía me lanza una excepción address ex00000000, ya he intentado toda la variante posibles y todas me lanzan una excepción, el campo de la base de datos en cuestión es del tipo Blob de texto:

delphi
  1. FObservacion := Query.Fields[0].value; //Excepcion
  2. FObservacion.Add(Query.Fields[0].value); //Excepcion
  3. FObservacion.Text := Query.Fields[0].value; /Excepcion
  4. FObservacion.Text := TSTrings(Query.Fields[0]).Text; //Excepcion
  5. FObservacion.AddSTrings(Query.Fields[0].value); //Error de Compilación

 
Todas con su Variante .AsString y AsVariant, ¿Hay forma de resolver ésto?. 8o|
  • 0

#2 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 posts
  • LocationArgentina

Posted 12 July 2016 - 01:55 PM

if not TField.IsNull then


  • 1

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 12 July 2016 - 01:56 PM

Me hice una función un tanto chapucero pero me resolvió el problema de momento, aún así espero por sus soluciones:
 


delphi
  1. function StrToTStrings(Str: String): TStringList;
  2. var Lista: TStringList;
  3. begin
  4. Lista := TSTringList.Create;
  5.  
  6. if Str <> '' then
  7. Lista.Text := Str
  8. else Lista.Clear;
  9.  
  10. Result := Lista;
  11.  
  12. end;


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 12 July 2016 - 01:57 PM

O la de Agustín :D


  • 0

#5 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 posts
  • LocationArgentina

Posted 12 July 2016 - 06:55 PM

:) igual yo odio los chequeos por null. La idea sino entendí mal es cargar un blob de texto en un objeto TStrings? Y si el campo es null dejas el TStrings.Text vacío?
  • 0

#6 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 13 July 2016 - 10:55 AM

Ojo que el Tipo TStrings es una clase base y tiene varias funciones abstractas, por lo cual no se debe utilizar directamente,  en este caso te funciona porque retorna un TStringList.
 
La forma correcta de utilización es:

delphi
  1. Var
  2.   Objeto : TStrings;
  3. Begin
  4.    Objeto := TStringList.Create;
  5.    Objeto.Add('valor');
  6.    Objeto.Text := 'Valor';
  7.    Objeto.CommaText := 'valor1,valor2,valor3';
  8.  
  9.    If Objeto.Count > 0 then
  10.       Objeto[0] := 'Valor';
  11.  
  12.   ShowMessage(Objeto.Text);
  13. End;


  • 1

#7 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 posts
  • Location127.0.0.1

Posted 13 July 2016 - 06:09 PM

Hola,.

 

Una observacion.   Veo que en sus funciones y en los ejemplos mostrados, crean los objetos, pero no los Liberan.

 

Me gustaria recomendar los Bloques TRY ... FINALLY  .... END, con esto se asegura un buen metodo de liberacion de los recursos ya usados.

 

"Existen mas 5,000 formas distintas de resolver un problema, No te preocupes mucho... Solo necesitas una"....

 

Disculpen mi Intrusion en el tema, ;)


  • 1

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 14 July 2016 - 01:54 PM

 

Disculpen mi Intrusion en el tema, ;)

 

Ninguna aportación es una intrusión. (y)

 

Saludos


  • 0

#9 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 14 July 2016 - 06:17 PM

muy cierto sir.dev.a.lot nunca olvidar eso, muy buen aporte, a menos que trabajes con interfaces.

 

Saludos. 


  • 1




IP.Board spam blocked by CleanTalk.