Ver la Versión Completa : de Blob a ????
brandolin
01-04-2004, 21:49:10
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....
guillotmarc
01-04-2004, 22:37:51
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.
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.
__cadetill
01-04-2004, 22:41:42
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 :o
Me a parecido muy interesante Marc, gracias ;)
roman
01-04-2004, 22:43:51
Si el blob consiste simplemente de líneas de texto ¿no podría simplemente asignarse a la propiedad Text del StringList?
// Saludos
brandolin
01-04-2004, 22:48:08
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
roman
01-04-2004, 22:49:34
ya probe esa opcion y me larga una troncha de errores...
¿y exactamente cuáles son los errores?
// Saludos
guillotmarc
01-04-2004, 23:21:08
el de las RX no me gusta demasiado... buscaba algo mas directo...
:confused: :confused: ¿ Más directo ?. :confused: :confused:
Julià T.
02-04-2004, 00:31:52
hola brandolin:
prueba el codigo siguiente:
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.