powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите по работе с BlobStream...
7 сообщений из 7, страница 1 из 1
Подскажите по работе с BlobStream...
    #32409849
AirBag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подозреваю, что в программе, в какой-то из приведённых функций есть ошибка (при звершении программа виснет. Debuger показывает на код в импортируемой DLL...может память как-то не так высвобождается). Пожалуйста, подскажите:

написано в Билдере

Функция устанавливает картинку на форме:

int __fastcall Tcard_window::SetUserFoto(int Mode)
{
TBlobField* FotoField;
TADOBlobStream *BS;

if (Mode == 0)
{
Image1->Picture->Assign(main_window->TMyCard[main_window->CurrentCard]->FPicture);

return 0;
}

FotoField = (TBlobField*)main_window->ADOQuery1->FieldByName("foto");

BS = new TADOBlobStream ( FotoField, bmRead );

try
{
Image1->Picture->Bitmap->LoadFromStream(BS);
}
catch ( ... )
{
//Image1->Picture->Bitmap->FreeImage();
}

delete BS;

return 0;
}


Функция записывает картинку в БД:



void __fastcall Tcard_window::PutFotoToBase(void)
{
TBlobField* FotoField;// = (TBlobField*)ADOTable1->Fields->Fields[25];
TFileStream *fs;
TADOBlobStream *BS;

if(OpenPictureDialog1->Execute())
{
main_window->ADOTable1->Open();
// --------------------------------------------
TLocateOptions Opts;
Opts.Clear();
Variant LocVal = Variant(numer);

main_window->ADOTable1->Locate("counter", LocVal, Opts);

// --------------------------------------------
FotoField = (TBlobField*)main_window->ADOTable1->Fields->FieldByName("foto");//Fields[25];

fs= new TFileStream( OpenPictureDialog1->FileName, fmOpenRead);
Image1->Picture->Bitmap->LoadFromStream(fs);

main_window->ADOTable1->Edit();
BS = new TADOBlobStream ( FotoField, bmWrite );

try
{
BS->LoadFromStream(fs);
}
__finally
{
delete BS;
delete fs;
}

main_window->ADOTable1->Post();
main_window->ADOTable1->Close();
}

}
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32409993
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск->blob
____
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32410626
AirBag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что там , в поиске ?...
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32411150
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//---------------------------------------------------------------------------
bool save_jpeg( TField *field, TJPEGImage *picture )
{
assert(field);
assert(picture);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
picture->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
blob->LoadFromStream(stream);
}
}catch(...){ return false;}
delete stream;
return true;
}
//---------------------------------------------------------------------------
bool load_jpeg( TField *field, TJPEGImage *picture )
{
bool result = true;
assert(field);
assert(picture);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
blob->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
picture->LoadFromStream(stream);
}else
result = false;
}catch(...){ result = false; }
delete stream;
return result;
}
//---------------------------------------------------------------------------
bool jpeg2file( TField *field, char *name_file )
{

bool result = true;
assert(field); assert(name_file);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
blob->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
stream->SaveToFile(name_file);
}else
result = false;
}catch(...){ result = false; }
delete stream;
return result;
}
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32412866
AirBag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!

Но, к сожалению, я не обнаружил принципиальных отличий от моего кода...
Если я не прав, поясните пожалуйста.
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32414500
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
---я не обнаружил принципиальных отличий от моего кода...

теоритически подход тот же.

а практически мой вариант работает
...
Рейтинг: 0 / 0
Подскажите по работе с BlobStream...
    #32414594
AirBag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил в свой код (по подобию вашего примера):

stream->Seek(0,0);

При предварительном тестировании зависания не обнаружено....
Надеюсь, что и не обнаружится.

Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите по работе с BlobStream...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]