Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

картинка 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 вся ветка

Форум: "Базы";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
5-1152871960
Solomenko
2006-07-14 14:12
2007.04.29
Свойство типа TForm в компоненте не работает


2-1175968783
Степан
2007-04-07 21:59
2007.04.29
Утекает память? али нет...


3-1170928868
maxmaxov
2007-02-08 13:01
2007.04.29
простой вопрос по PL SQL


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


15-1175355393
Reactor
2007-03-31 19:36
2007.04.29
Доудаление касперского





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский