Вверх ↑
Этот топик читают: Гость
Ответов: 689
Рейтинг: 20
#1: 2006-12-07 09:53:10 ЛС | профиль | цитата
Как прочитать все, кроме картинки, я знаю, спасибо Вячеславу, Леониду и другим.
А вот с картинкой первый раз столкнулся.
Можно ли ее прочитать и поместить вместо, ну например, ранее загруженного на форме изображения?

[size=-2]Тип данных в таблице BLOB, из различных менеджеров картинка видна, в базу загружалась как JPEG, при выводе поток выводится текст.

Заранее как говорится спасибо всем

[size=-2]------ Добавлено в 09:53
Поставим вопрос по другому. Есть такой вот элемент:
Add(BitmapArray,2151819,451,147)
{
Bitmaps=[]
UseName=1
}
Как записать картинку в этот массив динамически, т.е. во время выполнения программы?
В каком формате ее туда надо писать, что-бы элемент массива добавился?
Я попробовал вот так:
Add(Image,5147861,556,343)
{
Left=510
Top=350
Width=200
Height=170
}
Add(Hub,7287444,353,336)
{
OutCount=5
link(onEvent1,2151819:doClear,[(418,342)(418,153)])
link(onEvent2,16119493:doValue,[(418,349)(418,62)])
link(onEvent3,13574662:doWrite,[(418,356)(418,293)])
link(onEvent4,388195:doMessage,[(418,363)(418,405)])
link(onEvent5,7721640:doRead,[(418,370)(418,349)])
}
Add(Memory,8000648,458,105)
{
Default=Integer(0)
}
Add(Message,388195,458,399)
{
Message="wwqwq"
Caption="eeeeerrrrrrrrrrrrrrrrrr"
link(Message,13574662:Count,[(464,356)(464,356)])
}
Add(BitmapArray,2151819,451,147)
{
Bitmaps=[]
UseName=1
}
Add(ArrayRW,7721640,479,343)
{
link(onRead,5147861:doLoad,[])
link(Array,232062:Var3,[(485,254)])
link(Index,11710172:Var3,[(492,247)])
}
Add(ArrayRW,13574662,451,280)
{
Point(Count)
link(Array,232062:Var2,[])
link(Index,11710172:Var2,[])
link(Value,16119493:Value,[(471,184)(457,184)])
}
Add(GetDataEx,232062,444,245)
{
link(Data,2151819:Array,[])
}
Add(GetDataEx,11710172,451,238)
{
link(Data,8000648:Value,[])
}
Add(Memory,16119493,451,56)
{
}
, так не пишется... :-?
Подскажите пожалуйста
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2006-12-07 12:53:53 ЛС | профиль | цитата
tsdima А-у Есть возможность или нет
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2125
Рейтинг: 159
#3: 2006-12-07 13:31:24 ЛС | профиль | цитата
На данный момент все данные из базы возвращаются как строка. Если можно строку сконвертировать в поток, а из потока загрузить картинку - то есть возможность
карма: 1

0
Ответов: 8928
Рейтинг: 823
#4: 2006-12-07 14:58:36 ЛС | профиль | цитата
oldTV, если хранить массив картинок отдельно (скажем, в той же папке, что и БД), то можно организовать открытие их при открытии БД и программное добавление/удаление картинок в/из массива с привязкой к какому-нибудь индексу из БД с помощью компонента MultiElementEx, да можно и без него, добавляя в БД не картинку, а её адрес.
карма: 19

0
Ответов: 2125
Рейтинг: 159
#5: 2006-12-07 15:27:42 ЛС | профиль | цитата
Вобщем, попробовал я, трабла тут такая: SQLite выдавая BLOB как строку заменяет нули на %0, а проценты на %%, в итоге получается не совсем то, что в этом BLOB-е лежит. Вот так у меня работает:
code_709
Имя базы и запрос, естественно, свой подставь. А в BLOB - jpeg положи.

А ещё в конец потока один ноль добавляется. Но если каждый раз поток очищать - проблем вроде не должно быть.
карма: 1

0
файлы: 1code_709.txt [1.2KB] [345]
Ответов: 689
Рейтинг: 20
#6: 2006-12-08 12:36:27 ЛС | профиль | цитата
У меня такая проблема: картика вроде бы открывается, но если в базе нет картинки - все глухо виснет. Не знаю почему. Мой запрос вот такой:
SELECT PersPhoto FROM Persons WHERE idRec=1
картинка есть пока в idRec=1. Если оставляю запрос такой - картинка открывается, все ок. Если меняю на SELECT PersPhoto FROM Persons WHERE idRec=2 - все виснет.
карма: 0

0
Ответов: 2125
Рейтинг: 159
#7: 2006-12-08 12:51:38 ЛС | профиль | цитата
в конец потока один ноль добавляется
Компонент Jpeg виснет, если ему на вход подать "картинку" из всего лишь одного нуля. Проверяй длину потока в MemoryStream, если =1, то грузить картинку не надо
карма: 1

0
Ответов: 689
Рейтинг: 20
#8: 2006-12-08 18:13:50 ЛС | профиль | цитата
спасибо, работает, но
еще вопросы, если не сложно помогите:

1. если получилось прочитать картинку, то хочется и записать
2. логика работы должна быть на мой взгляд следующая:
  • если длина MemoryStreem=1, то картинку ОЧИЩАЕМ (плохо) или грузим некую стандартную(не из базы, из кода), по типу "Фота не предоставлена" (хорошо).
    Спасибо tsdima тебе большое

    [size=-2]------ Добавлено в 18:13
    Иногда как-то не предсказуемо виснет, даже не дойдя до debug, даже с RunTimeError 216:
    code_718
  • карма: 0

    0
    файлы: 1code_718.txt [1.7KB] [370]
    Ответов: 2125
    Рейтинг: 159
    #9: 2006-12-08 19:02:13 ЛС | профиль | цитата
    Видимо, SQLite_DB в схеме не единственный
    Базу нужно открывать один раз, и использовать везде её dbHandle

    oldTV писал(а):
    хочется и записать

    Делай всё наоборот
    Картинку в поток - поток в строку - обратная замена % и - запись строки в поле базы.
    Как выяснилось BLOB и в базе так хранится, как строка - с замененными % и .
    карма: 1

    0
    9
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)