Вниз
Скачать: CL | DM;

картинка BLOB в строку   Найти похожие ветки 

← →
analyst   (2007-02-13 06:55) [0]

Господа, приветствую!

Может ли кто-нибудь подсказать как можно перевести изображение, хранимое в BLOB-поле БД, в строку и обратно?
Необходимо передавать картинки в виде XML файлов удаленным получателям.

Заранее спасибо за ответы!


← →
Кщд ©   (2007-02-13 09:02) [1]

TBlobStream.Read


← →
analyst   (2007-02-13 10:36) [2]

А допустимо ли просто читать textfield:=query1.FieldByName("blob_field").asString ?

И обратно query1.FieldByName("blob_field").asString:=textfield ?


← →
Кщд ©   (2007-02-13 10:39) [3]

analyst   (13.02.07 10:36) [2]
в общем случае - нет
это же бинарные данные


← →
Ega23 ©   (2007-02-13 10:52) [4]


function StreamToMSSQLStr(aStream:TStream):String;
var
i:Integer;
bb:array[0..1] of byte;
begin
Result:="NULL";
if (not Assigned(aStream)) or (aStream.Size=0) then Exit;
aStream.Position:=0;
Result:="0x";
for i:=0 to aStream.Size-1 do
 begin
  aStream.Read(bb,1);
  Result:=Result+Dec2Hex(bb[0],2);
 end;
end;


← →
analyst   (2007-02-13 13:41) [5]

а что если из потока в строку переводить так?

var
 s: string;
 t: string;
 m: TMemoryStream;
begin
 s := "123";
 m := TMemoryStream.Create;
 try
   // из строки в поток
   m.WriteBuffer(PChar(s)^, Length(s));
   m.Position := 0;
   // из потока в строку
   SetLength(t, m.size);
   m.ReadBuffer(PChar(t)^, m.size);
   ShowMessage(t);
 finally
   m.Free;
 end;
end;

Ну а из потока в блоб и из блоба в поток при помощи LoadFromStream и SaveToStream


← →
Правильный Вася   (2007-02-13 13:54) [6]

XML - текстовый файл, а не бинарник как картинка


← →
analyst   (2007-02-13 15:03) [7]

Правильный Вася   (13.02.07 13:54) [6]:
Ценное замечание, особенно, если вопрос звучал:
"как можно перевести изображение, хранимое в BLOB-поле БД, в строку"


← →
Сергей М. ©   (2007-02-13 15:33) [8]


> analyst   (13.02.07 15:03) [7]


Что, по-твоему, означает "перевести что-то там в строку" ?

То что ты хочешь в данной формулировке, "в лоб"  решается до смешного просто:

SetLength(MyStrVar, BlobStream.Size);
BlobStream.ReadBuffer(PChar(MyStrVar)^, BlobStream.Size);

Ну а для строкового hex-представления бин.данных существуют станд.ф-ции IntToHex, BinToHex - стыдно должно быть не знать существование и принцип работы оных)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.04 c
2-1175717826
_Solo_
2007-04-05 00:17
2007.04.29
Ползунок


15-1175524860
oldman
2007-04-02 18:41
2007.04.29
2,5 миллиона долларов - это цена трусости, разума или жадности?


2-1176124563
fear
2007-04-09 17:16
2007.04.29
setlength


2-1176353386
Novice
2007-04-12 08:49
2007.04.29
Доступ к файловой системе


15-1175259005
Александр1234
2007-03-30 16:50
2007.04.29
о управлении в Delphi




   Наверх