![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
|
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.... |
|
#2
|
||||
|
||||
|
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;
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#3
|
|||
|
|||
|
Cita:
Me a parecido muy interesante Marc, gracias ![]() |
|
#4
|
||||
|
||||
|
Si el blob consiste simplemente de líneas de texto ¿no podría simplemente asignarse a la propiedad Text del StringList?
// Saludos |
|
#5
|
|||
|
|||
|
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 |
|
#6
|
||||
|
||||
|
Cita:
// Saludos |
|
#7
|
||||
|
||||
|
Cita:
¿ Más directo ?. ![]()
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#8
|
|||
|
|||
|
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;
|
![]() |
|
|
|