Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизПроблемы с загрузкой данных из потока Найти похожие ветки
← →
iamkate © (2005-10-14 08:45) [0]Я считываю картинку из Image в поток. Значение потока присваиваю строке buff. Значение строки
загружаю в LobLocator, связанный с blob-полем моей таблицы. И на этом моменте программа
зависает. А если в LobLocator загружать данные просто из файла, то все нормально.
Но мне нужно именно из потока.
Подскажите, как это сделать. Если можно - поподробнее.
Спасибо.
With OracleQuery do
begin
fs:= TMemoryStream.Create; //Создаю поток
image.Picture.Bitmap.SaveToStream(fs); //Считываю значение Image в поток
fs.Seek(0, soFromBeginning);//Смещаюсь к началу потока
SetLength(buff, fs.Size);//Устанавливаю длину строки buff равной длине потока
fs.Write(buff[1], fs.Size);//Записываю в строку buff всю длину потока
fs.Free;//Очищаю поток
DeleteVariables;
DeclareVariable("ID", otInteger);
DeclareVariable("Photo", otBLOB);
SQL.Clear;
SQL.Add("BEGIN UPDATE_PHOTO(:ID, :Photo);END;");
lobTmp := TLOBLocator.Create(qryBlob.Session, otblob);//Создаю LobLocator для работы с blob-ом
SetVariable("ID", FKeyFieldValue);
try
SetComplexVariable("Photo", lobTmp);
try
Execute;
lobTmp.AsString := Buff;//Загружаю в LobLocator значение строки buff
// lobtmp.LoadFromFile("PhotoFile.bmp");
except
on E:Exception do
MessageDlg(E.Message, mtError, [mbYes], 0);
end;
finally
lobTmp.Free;
end;
OracleSession.Commit;
end;
← →
Johnmen © (2005-10-14 09:12) [1]Тебе не надоело задавать одни и те же вопросы каждый день?
Ответов не понимаешь?
http://delphimaster.net/view/3-1129200122/
http://delphimaster.net/view/3-1129200122/
← →
iamkate © (2005-10-14 09:42) [2]Из базы в Image у меня все работает. А мне надо наоборот.
А в таком разрезе, между прочим, никто по существу не отвечал.
← →
Johnmen © (2005-10-14 10:15) [3]>А в таком разрезе, между прочим, никто по существу не отвечал.
Отвечали.
Просто всем уже надоело жевать одно и то же с завидной регулярностью для тех, кто не хочет искать, думать, просто жать F1 в конце концов...
← →
ANB © (2005-10-14 10:25) [4]
> lobTmp.AsString := Buff;//Загружаю в LobLocator значение
> строки buff
- вот так делать не надо. Грузи сразу из потока. Тебе же уже писали. И кода меньше. Поток не забудь перемотать на начало.
← →
iamkate © (2005-10-14 12:55) [5]Да перестаньте же мучать меня и себя! Скажите толком, как грузить сразу из потока и в какое место кода это вставить?!
Ведь нет же LobLocator.LoadfromStream. Как же это сделать?
Я не развлекаюсь, я действительно не знаю как и нигде не могу этого найти!
← →
ANB © (2005-10-14 14:33) [6]
> fs.Write(buff[1], fs.Size);//Записываю в строку buff всю
> длину потока
- кто тебе сказал, что здесь ты пишешь в строку ? Хелп глянь, это запись в поток (мусора)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c