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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 09:00:21.


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