Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-04-2004
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Angry de Blob a ????

Hola a todos, perdon por el titulo pero en realidad es asi...

Les cuento, estoy trabajando con Firebird 1.5 y tengo en una tabla un campo Blob, lo que deseo hacer es tomar ese blob y pasarlo a alguna estructura en memoria para hacer algunas operaciones, exportarlo, copiarlo, etc. He pensado en los strings, pero el tema son las lineas, luego las TStringList, pero no puedo acceder a las lineas del blob para copiarla una por una...

Alguien se le ocurre algo. Gracias desde ya....
Responder Con Cita
  #2  
Antiguo 01-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

La última vez que he tenido que hacer algo parecido, he usado funciones de las RxLib. En concreto las WordCount y ExtractWord.

Es decir, accedo al Blob como una Cadena, y utilizo las funciones comentadas para extraer cada una de las lineas de la cadena.

Ejplo.

Código:
  Uses RxStrUtils;
  ...
  ...
  Cadena := Query1.FieldByName('CAMPO_BLOB').AsString;
  for i := 1 to WordCount(Cadena, [#10]) do begin
    ShowMessage(ExtractWord(i, Cadena, [#10]));
  end;
Nota: Seguro que hay una forma más elegante de hacerlo con un TStringList, pero esta funciona correctamente.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 01-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por guillotmarc
La última vez que he tenido que hacer algo parecido, he usado funciones de las RxLib. En concreto las WordCount y ExtractWord.
Tremendo, cada día aprendo cosas nuevas de las rusas

Me a parecido muy interesante Marc, gracias
Responder Con Cita
  #4  
Antiguo 01-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si el blob consiste simplemente de líneas de texto ¿no podría simplemente asignarse a la propiedad Text del StringList?

// Saludos
Responder Con Cita
  #5  
Antiguo 01-04-2004
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
roman, ya probe esa opcion y me larga una troncha de errores...

vere con las otras opciones, pero el de las RX no me gusta demasiado... buscaba algo mas directo...

sigamos intentando muchachos, graciasssssss
Responder Con Cita
  #6  
Antiguo 01-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por brandolin
ya probe esa opcion y me larga una troncha de errores...
¿y exactamente cuáles son los errores?

// Saludos
Responder Con Cita
  #7  
Antiguo 01-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por brandolin
el de las RX no me gusta demasiado... buscaba algo mas directo...
¿ Más directo ?.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 02-04-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
hola brandolin:

prueba el codigo siguiente:

Código:
function StringsToBlob(aStrings:TStrings;aBlob:TBlobField):boolean;
Var
  M:TMemoryStream;
begin
  Result:=False;
  M:=TmemoryStream.Create;
  with TDataset(aBlob.GetParentComponent) do
  try
    aStrings.SaveToStream(M);
    M.Seek(0,0);
    Edit;
    aBlob.LoadFromStream(M);
  //Post; //no es conveniente hacerlo aqui ni olvidarse de el
    Result:=True;
  finally
    M.Free;
  end;
end;

function BlobToStrings(aStrings:TStrings;aBlob:TBlobField):boolean;
Var
  M:TMemoryStream;
begin
  Result:=False;
  if aBlob.IsNull then exit;
  M:=TmemoryStream.Create;
  try
    aBlob.SaveToStream(M);
    M.Seek(0,0);
    aStrings.LoadFromStream(M);
    Result:=True;
  finally
    M.Free;
  end;
end;
en mi web personal, en la sección código, tengo algun ejemplo más con blobs, pero no con TStrings
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:49:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi