Ir al contenido


Foto

Problema cargar datos vacíos en una propiedad TSTrings


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

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 12 julio 2016 - 01:48

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 mensajes
  • LocationArgentina

Escrito 12 julio 2016 - 01:55

if not TField.IsNull then


  • 1

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 12 julio 2016 - 01:56

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
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 12 julio 2016 - 01:57

O la de Agustín :D


  • 0

#5 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 12 julio 2016 - 06:55

:) 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 mensajes
  • LocationCali, Colombia

Escrito 13 julio 2016 - 10:55

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 mensajes
  • Location127.0.0.1

Escrito 13 julio 2016 - 06:09

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

Escrito 14 julio 2016 - 01:54

 

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 mensajes
  • LocationCali, Colombia

Escrito 14 julio 2016 - 06:17

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.