Schumi |
Отправлено: 22.09.2004, 21:23 |
|

Машинист паровоза
Группа: Участник
Сообщений: 206

|
Допустим есть ресурс (jpg),и мне его нужно выводить на экран.
Сейчас я делаю так:
CODE |
TJPEGImage *MyJPEG;
MyJPEG = new TJPEGImage();
TResourceStream *JPEGRes;
JPEGRes=new
TResourceStream((int)HInstance,AnsiString("MyJPEG"),RT_RCDATA);
MyJPEG->LoadFromStream(JPEGRes);
JPEGRes->Free();
((TPaintBox*)Sender)->Canvas->Draw(0, 0, MyJPEG);
|
И у меня возникают такие вопросы:
1) а нельзя обойтись без stream,а сразу как-то грузить в image
2) допустим,я объявил JPEGRes,а потом в цикле делаю new и в конце free. У меня не получается утечки памяти:методом free освобождается вся память
|
 |
Shura |
Отправлено: 23.09.2004, 11:01 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45

|
2. Ни в коем случае нельзя освобождать память функцией free() если она была выделена new |
 |
Konstantine |
Отправлено: 23.09.2004, 11:39 |
|
Мастер участка
Группа: Модератор
Сообщений: 545

|
QUOTE (Shura @ 23/09/2004, 12:03) | Ни в коем случае нельзя освобождать память функцией free() если она была выделена new |
не знаю как насчёт JPEG, но Thread-ы токо так и работают!!!
|
 |
Shura |
Отправлено: 23.09.2004, 16:17 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45

|
упс, перепутал JPEGRes->Free() и free() |
 |
Хлор |
Отправлено: 27.09.2004, 02:42 |
|

Дежурный стрелочник
Группа: Участник
Сообщений: 78

|
|
 |
Gedeon |
Отправлено: 27.09.2004, 09:31 |
|

Ветеран
Группа: Модератор
Сообщений: 1742

|
Вот попалось на глаза
CODE |
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TstBitmap.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Graphics::TBitmap* tbm;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
tbm = new Graphics::TBitmap;
tbm->LoadFromResourceName((int)HInstance,"MYBITMAP");
//Image1 — это TImage на форме
Image1->Canvas->Draw(0, 0, tbm);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete tbm;
}
//--------------------------------------------------------------------------- |
|
 |
Schumi |
Отправлено: 27.09.2004, 17:22 |
|

Машинист паровоза
Группа: Участник
Сообщений: 206

|
LoadFromResourceName работает только с bmp
|
 |