Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Мастера и любители прошу обратить внимание на данный код...   Найти похожие ветки 

 
NewGuest   (2003-01-26 10:57) [0]

Он позволяет вставлять bitmap в richedit, но пишет ошибку "[Warning] Unit1.pas(75): Variable "BMP" might not have been initialized "

Здесь BMP : Tbitmap

function BitmapToRTF(pict: TBitmap): string;
var
bi,bb,rtf: string;
bis,bbs: Cardinal;
achar: ShortString;
hexpict: string;
I: Integer;
begin
GetDIBSizes(pict.Handle,bis,bbs);
SetLength(bi,bis);
SetLength(bb,bbs);
GetDIB(pict.Handle,pict.Palette,PChar(bi)^,PChar(bb)^);
rtf := "{\rtf1 {\pict\dibitmap ";
SetLength(hexpict,(Length(bb) + Length(bi)) * 2);
I := 2;
for bis := 1 to Length(bi) do
begin
achar := Format("%x",[Integer(bi[bis])]);
if Length(achar) = 1 then
achar := "0" + achar;
hexpict[I-1] := achar[1];
hexpict[I] := achar[2];
Inc(I,2);
end;
for bbs := 1 to Length(bb) do
begin
achar := Format("%x",[Integer(bb[bbs])]);
if Length(achar) = 1 then
achar := "0" + achar;
hexpict[I-1] := achar[1];
hexpict[I] := achar[2];
Inc(I,2);
end;
rtf := rtf + hexpict + " }}";
Result := rtf;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
SS : TStringStream;
BMP : TBitMap;

begin

BMP.LoadFromFile("1.bmp");
SS := TStringStream.Create(BitmapToRTF(BMP));
RxRichEdit1.PlainText := False;
RxRichEdit1.StreamMode := [smSelection];
RxRichEdit1.Lines.LoadFromStream(SS);
SS.Free;
BMP.Free;
end;


при выполнении программы такая вот ошибка

Project Project1.exe raised exception class EAccessViolation with message "Access violation at address 0045DB2B in module "Project1.exe". Read of address 8BD88B9F". Process stopped. Use Step or Run to continue.


 
Mike_Goblin ©   (2003-01-26 11:02) [1]

где пишет, в какой строке? может и правда Use Step or Run to continue

а вообще после бессонной ночи я вижу одно, что в обработчике события нет инициализации объектов BMP и SS


 
Романов Р.В. ©   (2003-01-26 11:03) [2]


> BMP : TBitMap;
>
> begin
>
> BMP.LoadFromFile("1.bmp");


А создавать BMP кто будет?
BMP := TBitMap.Create;

И вообще BMP.LoadFromFile("1.bmp"); должно быть внутри try, а BMP.Free; в finally.


 
NewGuest   (2003-01-26 11:10) [3]

вообще да... спасибо...
вчера очень поздно сидел, мозги вообще еле двигались...


Надеюсь этот код самы унивирсальный код по этой теме...
ещё раз спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.02.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-4812
Sergey_El'f
2003-01-17 13:31
2003.02.03
ADOQuery - возвращает иероглифы. где менять cp (langdriver?)


7-5312
Shtock
2002-11-26 11:08
2003.02.03
инициализация модема


8-5080
Insania
2002-10-19 23:56
2003.02.03
Как рисовать за Десктопом ? (Как в Winamp-AVS Overlay Mode)


14-5241
Ru
2003-01-16 12:06
2003.02.03
Прочти и напиши свой.


6-5103
mouse_1
2002-11-24 10:53
2003.02.03
Работа с сетевой картой