Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не хочу читать хелп, а мануал я выбросил нафиг. хочу чтобы вы мне подсказали... 
:(
    Опции темы
=Женек=
Дата 12.11.2005, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Сабж - шутка.


На самом деле в инете мало чего есть на эту тему, а в мануале (Поль Дюбуа - MySQL) очень скудно.

Как мне загрузить картинку из Image1->Picture в MySQL ? Что через BLOB поля, это я знаю, мне бы поконкретней.

Поделитесь парой строк кода..
PM MAIL   Вверх
=Женек=
Дата 12.11.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



нашел что-то - но там есть mysql_real_escape_string которая работает сбуфером типа char. А как мне Image1->Picture перегнать в char?
PM MAIL   Вверх
sadhu
Дата 13.11.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.8.2005

Репутация: нет
Всего: нет



Повнимательнее почитай хэлп по TImage - там есть возможность получить указатель на массив пикселов. Берешь его, копируешь блок памяти в свою переменную (может и без копирования пройдёт, но не гарантирую) и скармливаешь это "эскейп_рил".
PM MAIL   Вверх
=Женек=
Дата 13.11.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Я нашел там интересную штуку - SaveToStream

Как мне прочесть из TStream и обработать в mysql_real_escape_string.
И еще момент - я так понимаю что в BLOB можно записать что угодно.
Так вот надо записать так, чтобы я мог с помощью РНР извлечь нормальную картинку.
PM MAIL   Вверх
_hunter
Дата 14.11.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



не знаю через что ты работаеш с базой, но что у TADOQuery что у TIBQuery есть метод CreateBlobStream который создаст поток, в который можно писать SaveToStream-ом


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
=Женек=
Дата 14.11.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Нашел я вот такую штуку
Код

TStream * Stream=new TMemoryStream();
picture->Graphic->SaveToStream(Stream);
try
{
query->Close();
query->SQL->Clear();
query->SQL->Add("insert into "+tableName+" ("+keyFieldName+","+pictureFieldName+")"+AnsiString(" values(:param1,:param2)"));
query->ParamByName("param1")->Value=keyValue;
query->ParamByName("param2")->LoadFromStream( Stream,ftBlob);
try
{
query->ExecSQL();
}
catch(Exception & error)
{
ShowMessage(error.Message);
return ;
}
}
__finally
{
delete Stream;
}



Вместо TIBQuery можно использовать компоненты MySQL DAC.
ОДнако я пишу на С API, не хочется перестраиваться на эти компоненты.

Мне всего-то нужно данные из TStream обработать функцией mysql_real_escape_string.
Блин.. что-то я совсем запутался...



PM MAIL   Вверх
_hunter
Дата 14.11.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



а что она принимает? можно из буффера ( потока ) строку вытащить...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
=Женек=
Дата 14.11.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Я кажется писал - char массив обрабатывается функцией real_escape_string. В массив данные попадают из файла.
PM MAIL   Вверх
_hunter
Дата 14.11.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



ну так тю:
char* buffer = new char[stream->Size];
stream->Read(buffer, stream->Size);


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 14.11.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
=Женек=
Дата 14.11.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Я вот так сделал:
Код

TStream * Stream=new TMemoryStream();
TStream * Stream2=new TMemoryStream();
AddFilmForm->Screen1->Picture->Graphic->SaveToStream(Stream);
char* buffer = new char[Stream->Size];

Stream->Write(buffer,Stream->Size);

Stream2->Read(buffer, sizeof(buffer));

AddFilmForm->Screen2->Picture->Graphic->LoadFromStream(Stream2);



Для проверки - картинка из одного TImage копируется в другой. Посредник buffer.

ловлю exception Access violation

Это сообщение отредактировал(а) =Женек= - 14.11.2005, 14:31
PM MAIL   Вверх
Vyacheslav
Дата 15.11.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



То есть хелп читать принципиально не желаем?
Цитата

WriteBuffer(const void *Buffer, int Count);
Writes Count bytes from Buffer onto the stream and advances the current position of the stream by Count bytes.

Читает Count байтов ИЗ буфера в поток
В результате имеем
Код

//выделем буфер (пока с мусором)
char* buffer = new char[Stream->Size];
//дописываем это буфер с мусором уже к имеющей картинке
Stream->Write(buffer,Stream->Size);
//а теперь пытемся из пустого стрима в буфер записать информацию размером в буфер
Stream2->Read(buffer, sizeof(buffer));



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
=Женек=
Дата 15.11.2005, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Вячеслав, вы правы.
Я интуитивно воспринимал смысл функции.

Ну согласитесь, что строка Stream2->Read ассоциируется с чтением из буфера и записью в Stream
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0952 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.