Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: 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 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.04 c
15-1175239812
Донской
2007-03-30 11:30
2007.04.29
Имитация интерфейса прибора


2-1175940604
Officeman
2007-04-07 14:10
2007.04.29
CheckListBox для тех кто в танке


8-1155306409
Levabd
2006-08-11 18:26
2007.04.29
Mp3Теги


2-1175638237
SerJaNT
2007-04-04 02:10
2007.04.29
Удалить компонент


2-1175109539
arturich
2007-03-28 23:18
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский