![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
картинка BLOB в строку [D7, IB6.x]
analyst © (2007-02-13 06:55:00)Господа, приветствую!
Может ли кто-нибудь подсказать как можно перевести изображение, хранимое в BLOB-поле БД, в строку и обратно?
Необходимо передавать картинки в виде XML файлов удаленным получателям.
Заранее спасибо за ответы!
Сергей М. (2007-02-13 15:33:00) [1]
> analyst (13.02.07 15:03) [7]
Что, по-твоему, означает "перевести что-то там в строку" ?
То что ты хочешь в даннойформулировке, "в лоб" решается до смешного просто:
SetLength(MyStrVar, BlobStream.Size);
BlobStream.ReadBuffer(PChar(MyStrVar)^, BlobStream.Size);
Ну а для строкового hex-представления бин.данных существуют станд.ф-ции IntToHex, BinToHex - стыдно должно быть не знать существование и принцип работы оных)
analyst (2007-02-13 15:03:00) [2]Правильный Вася (13.02.07 13:54) [6]:
Ценное замечание, особенно, если вопрос звучал:
"как можно перевести изображение, хранимое в BLOB-поле БД, в строку "
Правильный Вася (2007-02-13 13:54:00) [3]XML - текстовый файл, а не бинарник как картинка
analyst (2007-02-13 13:41:00) [4]а что если из потока в строку переводить так?
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
Ega23 (2007-02-13 10:52:00) [5]
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;
Кщд (2007-02-13 10:39:00) [6]analyst (13.02.07 10:36) [2]
в общем случае - нет
это же бинарные данные
analyst (2007-02-13 10:36:00) [7]А допустимо ли просто читать textfield:=query1.FieldByName('blob_field').asString ?
И обратно query1.FieldByName('blob_field').asString:=textfield ?
Кщд (2007-02-13 09:02:00) [8]TBlobStream.Read