Erreur dans la lecture d'un blob text
Bonjour,
avec une base InterBase voici le problème :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
var
Refl,WorkStr: AnsiString;
ReflStream: TMemoryStream;
begin
ReflStream:= tMemoryStream.Create;
// ... lancement de la requête qui fonctionne
(FieldByName(MON_CHAMP_BLOB) as tBlobField).SaveToStream(ReflStream);
SetLength(WorkStr, ReflStream.Size);
ReflStream.ReadBuffer(Pointer(WorkStr)^, ReflStream.Size);
Refl := WorkStr; |
j'ai vérifié au pas à pas ReflStream.Size est correct 61 ko et des..
L'erreur se produit à la lecture du buffer :
EReadError erreur de lecture du flux
Quel chapitre ais-je manqué ? et sutout comment corriger ?
Merci d'avance
Cherchez plus j'ai trouvé
Voila la solution à la conversion en texte du memorystream lu dans le champ blog :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
function MemoryStreamToString( MS : TMemoryStream ): AnsiString;
var
SS: TStringStream;
format: TStreamOriginalFormat;
begin
SS:= TStringStream.Create(Result);
try
MS.Seek(0,soFromBeginning);//Se place au début du flux MS.
format := sofText;
//Convertit l'objet contenu dans MS en texte et le place dans SS.
ObjectBinaryToText(MS,SS, format);
SS.Seek(0,soFromBeginning);//Se place au début du flux SS.
Result :=SS.DataString;//On accéde au texte du flux.
finally
SS.Free;
end;
end; |
Pour ceux que cela interesse...