Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изврат :)

471
15 марта 2005 года
_MC_
178 / / 13.01.2005
Как записать битмап в текст и наоборот?
259
15 марта 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_
Как записать битмап в текст и наоборот?


Первый вопрос зачем? И второй вопрос: Что значит в текст?

471
16 марта 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Первый вопрос зачем? И второй вопрос: Что значит в текст?


Первый ответ - нужно картинку запихнуть в БД в поле типа МЕМО
Второй ответ - вытекает из первого :)

259
16 марта 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

Первый ответ - нужно картинку запихнуть в БД в поле типа МЕМО
Второй ответ - вытекает из первого :)


Сходи вот сюда http://forums.progers.ru/index.php?showtopic=27. Для этого совсемп не обязательно в текст сохранять картинку. Если что не понятно будет спрашивай - отвечу.

PS: Вот тут попонятней будет http://www.bcbdev.ru/phpbb/viewtopic.php?t=2370

2.3K
16 марта 2005 года
ART-CODE
134 / / 15.11.2004
Вот действительно subject :)

-1-
Можно выполнить преобразование в Base64
есть такой компонент в Билдере.

-2-
А Кроме "Memo" твоя бд. других типов данных не поддерживает ? :))

-3-
Этот метод я постоянно использую:
Cохранить картинку в файл
с именеим типа "x.bmp", где int x - номер иденификатора файла в бд.
Другими словами база хранит только числа int x,
А ПРИ ДОСТУПЕ К КАРТИНКЕ формируется имя файла
и подгружаем данные из файла
String FileName="Диск:\\\\директория_базы\\картинки\\"+ IntToStr(x);

МОРАЛЬ:
В базе нужно хранить ТОЛЬКО то, что нужно для статистического анализа или быстрого поиска.
Для поиска картинки она вся не нужна , достаточно только ее индекса.
471
16 марта 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by ART-CODE
Вот действительно subject :)

-1-
Можно выполнить преобразование в Base64
есть такой компонент в Билдере.

-2-
А Кроме "Memo" твоя бд. других типов данных не поддерживает ? :))

-3-
Этот метод я постоянно использую:
Cохранить картинку в файл
с именеим типа "x.bmp", где int x - номер иденификатора файла в бд.
Другими словами база хранит только числа int x,
А ПРИ ДОСТУПЕ К КАРТИНКЕ формируется имя файла
и подгружаем данные из файла
String FileName="Диск:\\\\директория_базы\\картинки\\"+ IntToStr(x);


2 - поддерживает, но мне нужно именно в мемо
3 - не подходит, никаких дополнительных файлов типа Диск:\\\\директория_базы\\картинки\\"+ IntToStr(x) не должно быть! только БД MSACCESS :)

259
16 марта 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

2 - поддерживает, но мне нужно именно в мемо
3 - не подходит, никаких дополнительных файлов типа Диск:\\\\директория_базы\\картинки\\"+ IntToStr(x) не должно быть! только БД MSACCESS :)


Я так и не понял в Memo это как должно выглядеть?
КАК
10013000400678
56400345006708
12300405500677

Или как реальная картинка?

471
16 марта 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Я так и не понял в Memo это как должно выглядеть?
КАК
10013000400678
56400345006708
12300405500677

Или как реальная картинка?



КАК
10013000400678
56400345006708
12300405500677

мне главное чтоб легко и быстро записывалось, и также легко из мемо можно было занрузить TImage!

2.3K
16 марта 2005 года
ART-CODE
134 / / 15.11.2004
Насчет метода -1-
Код:
//Допустим есть каринка
TBitmap* Bmp=new TBitmap ;
Bmp->LoadFromFile(...);

//Для перекодировки создаешь поток, в который сбрасываешь картинку
TMemoryStream * BmpStream=new TMemoryStream ;
Bmp->SaveToStream(BmpStream);
BmpStream->Position=0;

//Создаешь поток, в который запишем результат перекодировки
TMemoryStream * OutStream=new TMemoryStream ;

NMUUProcessor1->Method =uuMime;
NMUUProcessor1->InputStream=BmpStream;
NMUUProcessor1->OutputStream=OutStream;
NMUUProcessor1->Encode();
// сможешь сам выгрузить текст в Memo из потока OutStream ?

delete Bmp;
delete BmpStream;
delete OutStream;
391
17 марта 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by _MC_
Как записать битмап в текст и наоборот?


ЗаЮЮкай ее просто...
UUEncode() / UUDecode() повсюду в инете валяются.
Кстати, как работают БД, которые в полях позволяют двоичные данные держать?
Ведь чтобы послать SQL-запрос вида
INSERT INTO Table SET BinData=".....";
нужно же исключительно текст пересылать?..

10
17 марта 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Archie

Ведь чтобы послать SQL-запрос вида
INSERT INTO Table SET BinData=".....";
нужно же исключительно текст пересылать?..


Мдя-я. А параметры на что?

391
18 марта 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by smartsoft

Мдя-я. А параметры на что?


Ответ не полный :)
Как говорится, летят два крокодила - один зеленый, а другой на север...

Какие параметры и куда их девать?

Дело в том, что я работал с Gupta Team Developer в связке с Oracle 8. Так вот, в документации (к Team Dev) так и написано, чтобы загрузить, скажем, картинку в базу (в двоичном виде), то ее нужно прежде преобразовать в текст. Ну и функции соответствующие прилагаются. В чем подвох?

10
19 марта 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Archie

Дело в том, что я работал с Gupta Team Developer в связке с Oracle 8. Так вот, в документации (к Team Dev) так и написано, чтобы загрузить, скажем, картинку в базу (в двоичном виде), то ее нужно прежде преобразовать в текст.


Мдя-я-я. Не работайте с неправильными программами и не читайте неправильной документации. Уж где-где, но в Oracle8, блин! Это надо же удумать!

Все делается донельзя просто, если речь про Oracle. Позволю себе процитировать Тома Кайта: "всегда используйте параметры". От себя даже могу прибавить: [censored].

Короче, пишется так:

 
Код:
insert into TABLE1
  (FIELD1, FIELD2, FIELD3)
values
  (:FIELD1, :FIELD2, :FIELD3)

Поля могут быть любого типа. Ясный пень, что типы параметров должны подходить для соответствующего поля.

Если же для хранения в Oracle картинки используется тип BLOB, синтаксис будет несколько другим.
391
21 марта 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by smartsoft

Все делается донельзя просто, если речь про Oracle. Позволю себе процитировать Тома Кайта: "всегда используйте параметры". От себя даже могу прибавить: [censored].

Короче, пишется так:
 
Код:
insert into TABLE1
  (FIELD1, FIELD2, FIELD3)
values
  (:FIELD1, :FIELD2, :FIELD3)

Поля могут быть любого типа. Ясный пень, что типы параметров должны подходить для соответствующего поля.

Если же для хранения в Oracle картинки используется тип BLOB, синтаксис будет несколько другим.



И все-таки я не до конца понял... Если имеются ввиду параметры полей, что устанавливаются для SQL-компонент Delphi или CBuilder, то это меня не очень интересует... Вопрос в том, как это работает на "нижнем" уровне.
Вот я коннекчусь к серверу баз данных и получаю в консоли запрос на ввод SQL-комманд. Как мне закачать двоичные значения в базу? В какой момент я могу через сокет гнать двоичные данные после исполнения SQL-запроса?

10
22 марта 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Archie

Вот я коннекчусь к серверу баз данных и получаю в консоли запрос на ввод SQL-комманд. Как мне закачать двоичные значения в базу? В какой момент я могу через сокет гнать двоичные данные после исполнения SQL-запроса?


Че-то ты путаешь, брат. Какой нафиг, сокет в командной строке? Давай определимся: или сокет, или командная строка.

В Oracle из командной строки можно работать с LOB-ами только посредством PL/SQL, как я понимаю. Есть пакеты DBMS_LOB и DBMS_BFILE (насчет названия последнего не уверен - может вообще такого нет).

А доступ к сокету соединения с сервером на нижнем уровне тебе ни одна база не даст. Вся работа ведется через клиентское ПО.

391
22 марта 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by smartsoft

Че-то ты путаешь, брат. Какой нафиг, сокет в командной строке? Давай определимся: или сокет, или командная строка.

В Oracle из командной строки можно работать с LOB-ами только посредством PL/SQL, как я понимаю. Есть пакеты DBMS_LOB и DBMS_BFILE (насчет названия последнего не уверен - может вообще такого нет).

А доступ к сокету соединения с сервером на нижнем уровне тебе ни одна база не даст. Вся работа ведется через клиентское ПО.



Ок.
Короче, есть у меня
sql_connect ()
sql_prepare ()
sql_exec ()
sql_fetch... ()
sql_close ()
(функции предоставляет клиентская часть - других нету)
как мне послать двоичные данные, если sql_prepare принимает SQL-запрос только в виде текстовой строки?
Напрашивается ответ, что никак (поскольку зачем было делать функции преобразования картинки в строку и обратно?) Или в самом запросе можно сказать, что дескать, занчение этого поля нужно взять из такого-то файла/буфера... ?

10
22 марта 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Archie
Ок.
Короче, есть у меня
sql_connect ()
sql_prepare ()
sql_exec ()
sql_fetch... ()
sql_close ()
(функции предоставляет клиентская часть - других нету)


Что это за клиентское ПО такое? Самопальное?

Кстати, вывод напрашивается сам собой - раз есть sql_prepare, обязательно должна быть поддержка параметров. Что-то вроде sql_bind()

391
23 марта 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by smartsoft
Что это за клиентское ПО такое? Самопальное?

Кстати, вывод напрашивается сам собой - раз есть sql_prepare, обязательно должна быть поддержка параметров. Что-то вроде sql_bind()



Точно!
Есть такая sql_bindparameter
будем разбираться...

А ПО - какая-то надстройка над ODBC (это я все про TeamDev ;).

10
24 марта 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Archie
Есть такая sql_bindparameter
будем разбираться...


Так зеленый или на север?

Цитата:

А ПО - какая-то надстройка над ODBC (это я все про TeamDev ;).


Угораздило же вас.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог