-
При запуске под WinCE 5.0 (Aser n311) при использовании ImageDecompress программа выдаёт Runtime error 216 странно
-
вот такой код :
...
private
Image:PImageDecompress;
...
procedure TForm1.Button1Click(Sender: PObj);
begin
image.LoadFromFile('1.jpg');
image:=NewImageDecompress;
end;
procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
Image.Bitmap.Draw(DC, 0, 0);
end;
-
пардон :) вот такой :
...
private
Image:PImageDecompress;
...
procedure TForm1.Button1Click(Sender: PObj);
begin
image:=NewImageDecompress;
image.LoadFromFile('1.jpg');
end;
procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
Image.Bitmap.Draw(DC, 0, 0);
end;
пробовал вставить image:=NewImageDecompress; до показа основной формы, тоже не помогает
-
а если так: if Image <> nil then
Image.Bitmap.Draw(DC, 0, 0);
-
хм.. удивительное рядом. удалил PaintBox с формы, и бросил заново. на рантайм ругаться перестало, но картинку не показывает. есть-ли какаято специфика работы с LoadFromFile в WinCE ?
-
может полный путь к картинке указать?
-
хм.. путь к файлу может меняться. никто ведь не знает, куда завтра мне взбредёт в голову положить программу и картинки. так что это не выход в любом случае, я думаю.
-
Попробовал, работает, скорее всего файл не находит, поэтому ничего не загружается, поэтому Bitmap = nil, поэтому и валится.
procedure TForm1.KOLFormFormCreate(Sender: PObj); ...... FImg:= NewImageDecompress; FImg.LoadFromFile(ExtractFilePath(ParamStr(0))+'getImage.jpg'); ...
procedure TTextOutForm.PaintBox1Paint(Sender: PControl; DC: HDC); begin if (FImg.Bitmap <> nil) and not FImg.Bitmap.Empty then FImg.Bitmap.Draw(DC, 0, 0); end;
-
мда.. как говорится, "толи лыжи не едут, толи я..." вот такой код:
unit Unit1;
interface
uses Windows, Messages, KOL ,ImageDecompress
, Forms, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics;
;
type
TForm1 = class; PForm1 = TForm1; PForm1 = ^TForm1;
TForm1 = classobject(TFormTObj)
Button1: TKOLButton;
ButtonForward: TKOLButton;
ButtonBack: TKOLButton;
Form: PControl;
KOLForm1: TKOLForm;
KOLProject1: TKOLProject;
Memo1: TKOLMemo;
PaintBox1: TKOLPaintBox;
ProgressBar1: TKOLProgressBar;
Image:PImageDecompress;
procedure Button1Click(Sender: PObj);
procedure PaintBox1Paint(Sender: PControl; DC: HDC);
private
public
end;
var
Form1 : PForm1 : TForm1 ;
procedure NewForm1( var Result: PForm1; AParent: PControl );
implementation
procedure TForm1.Button1Click(Sender: PObj);
begin
image:=NewImageDecompress;
image.LoadFromFile(ExtractFilePath(ParamStr(0))+'1.jpg');
end;
procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
if (image.Bitmap <> nil) and not image.Bitmap.Empty then image.Bitmap.Draw(DC, 20, 20);
end;
initialization
end.
не работает :( не вылетает, но и не работает..
-
продолжаю танцы с бубном.. плюнул на визуальную разработку и написал вот так :
program project1;
uses
KOL,Windows,Messages,ImageDecompress;
var
Form,
pTop,
PB,
buOpen,
SBox:pControl;
JPG:PImageDecompress;
procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20);
end;
Procedure OpenPic ; begin
jpg:=NewImageDecompress;
jpg^.LoadFromFile(ExtractFilePath(ParamStr(0))+'1.jpg');
PB^.Width := JPG^.Bitmap^.Width ;
PB^.Height:= JPG^.Bitmap^.Height;
end;
begin
Applet := NewApplet('Pixie');
Form := NewForm(Applet,'Pixie');
pTop := NewPanel(Form,esRaised)^. SetAlign(caTop);
pTop^.Height := 35;
buOpen := NewButton(pTop,'show')^.SetAlign(caLeft);
buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
SBox := NewScrollBoxEx(Form,esLowered)^.SetAlign(caClient);
PB := NewPaintBox(SBox);
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
run(Applet);
end. снова полезло "Runtime error 216" причём что на КПК, что в эмуляторе проблема одинаковая. WinCE 5.0 и там и там
-
гы.. пардон, ничаяно 2 раза вставил
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
у меня в исходнике одна.. но сути это не меняет.. как не работало, так и не работает :(
-
если не трудно, попробуйте пожалуйста скомпилировать у себя , возможно у меня с компилятором проблемы ?
я работаю на:
Lazarus-0.9.23-fpc-2.2.0-20071019-win32 fpc-2.2.0.arm-wince kolce_rev247
-
ошибка рантайма вылетает сразу при запуске. проблема явно в этой процедуре:
procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20);
end;
если её содержимое закомментировать , то вылета ошибки рантайма нет.
-
> ошибка рантайма вылетает сразу при запуске.
правильно. jpg-то не создан.
-
урааааа.. !!!!!!!! заработало.. всем спасибо :)
program project1;
uses
KOL,Windows,Messages,ImageDecompress;
var
Form,
pTop,
PB,
buOpen,
SBox:pControl;
JPG:PImageDecompress;
procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 0, 0);
end;
Procedure OpenPic ; begin
jpg^.LoadFromFile(ExtractFilePath(ParamStr(0))+'f.jpg');
PB^.Width := JPG^.Bitmap^.Width ;
PB^.Height:= JPG^.Bitmap^.Height;
end;
begin
Applet := NewApplet('Pixie');
Form := NewForm(Applet,'Pixie');
jpg:=NewImageDecompress;
pTop := NewPanel(Form,esRaised)^. SetAlign(caTop);
pTop^.Height := 35;
buOpen := NewButton(pTop,'show')^.SetAlign(caLeft);
buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
SBox := NewScrollBoxEx(Form,esLowered)^.SetAlign(caClient);
PB := NewPaintBox(SBox);
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
run(Applet);
end.
ЗЫ: больше я в МСК ни ногой :( только PURE KOL .. как в тьюторе по МАСМ-у написано "PURE and SIMPLE" :)
-
buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
Procedure OpenPic ;//( Dummy : Pointer; Sender : PControl );
по-моему явная ошибка
-
проще всего
procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC ); begin if (JPG<>nil) and (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20); end;
и не жаловаться на Mirror, коли руки кривы :)
-
Я не жалуюсь на миррор, просто всю жизнь писал исключительно на ассемблере, и не привык к требованиям обьявления и инициализации переменных в ЯВУ. Поэтому и чистый КОL мне роднее и понятней :)
-
Удалено модератором
-
Удалено модератором
|