Главная страница
    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.04 c
1-1173156261
ТОНИ
2007-03-06 07:44
2007.04.29
Сохранение формы с компонентами в файл.


15-1175158476
Альберт
2007-03-29 12:54
2007.04.29
Уменьшить размер EXE


2-1176182269
zhurik
2007-04-10 09:17
2007.04.29
Динамический массив как параметр в процедуре ?


3-1171338914
analyst
2007-02-13 06:55
2007.04.29
картинка BLOB в строку


15-1175480857
Slider007
2007-04-02 06:27
2007.04.29
С днем рождения ! 1 апреля





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский