Конференция "KOL" » Где можно посмотреть пример работы с KOLJPGImage? [Lazarus, WinCE]
 
  • Дмитрий Пырин (02.04.08 07:55) [20]
    При запуске под WinCE 5.0 (Aser n311)  при использовании  ImageDecompress
    программа выдаёт
    Runtime error 216
    странно
  • Дмитрий Пырин (02.04.08 08:27) [21]
    вот такой код :


    ...
     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;  

  • Дмитрий Пырин (02.04.08 08:28) [22]
    пардон :)

    вот такой :


    ...
    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;   до показа основной формы, тоже не помогает
  • Дмитрий К © (02.04.08 08:37) [23]
    а если так:
    if Image <> nil then
     Image.Bitmap.Draw(DC, 0, 0);

  • Дмитрий Пырин (02.04.08 08:58) [24]
    хм.. удивительное рядом.
    удалил PaintBox с формы, и бросил заново. на рантайм ругаться перестало, но картинку не показывает.
    есть-ли какаято специфика работы с  LoadFromFile  в WinCE ?
  • D[u]fa (02.04.08 10:29) [25]
    может полный путь к картинке указать?
  • Дмитрий Пырин (02.04.08 10:44) [26]
    хм.. путь к файлу может меняться. никто ведь не знает, куда завтра мне взбредёт в голову положить программу и картинки. так что это не выход в любом случае, я думаю.
  • mdw © (02.04.08 12:00) [27]
    Попробовал, работает, скорее всего файл не находит, поэтому ничего не загружается, поэтому 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;
  • Дмитрий Пырин (02.04.08 12:25) [28]
    мда.. как говорится, "толи лыжи не едут, толи я..."

    вот такой код:

    { KOL MCK } // Do not remove this line!
    {$DEFINE KOL_MCK}
    {$ifdef FPC} {$mode delphi} {$endif}
    unit Unit1;

    interface

    uses Windows, Messages, KOL {place your units here->},ImageDecompress
    {$IFDEF LAZIDE_MCK}, Forms, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics;
    {$ELSE} ; {$ENDIF}

    type

     { TForm1 }

     {$I MCKfakeClasses.inc}
     {$IFDEF KOLCLASSES} TForm1 = class; PForm1 = TForm1; {$ELSE OBJECTS} PForm1 = ^TForm1; {$ENDIF CLASSES/OBJECTS}
     TForm1 = {$IFDEF KOLCLASSES}class{$ELSE}object{$ENDIF}({$IFDEF LAZIDE_MCK}TForm{$ELSE}TObj{$ENDIF})
       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
       { private declarations }
     public
       { public declarations }
     end;

    var
     Form1 {$IFDEF KOL_MCK} : PForm1 {$ELSE} : TForm1 {$ENDIF} ;

    {$IFDEF KOL_MCK}
    procedure NewForm1( var Result: PForm1; AParent: PControl );
    {$ENDIF}

    implementation

    {$IFDEF KOL_MCK}
    {$I unit1_1.inc}
    {$ENDIF}

    { TForm1 }

    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.  



    не работает :(
    не вылетает, но и не работает..
  • Дмитрий Пырин (02.04.08 12:59) [29]
    продолжаю танцы с бубном.. плюнул на визуальную разработку и написал вот так :

    program project1;
    {$mode objfpc}{$H+}
    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 ;//( Dummy : Pointer; Sender : PControl );
    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  и там и там
  • Дмитрий Пырин (02.04.08 13:03) [30]
    гы.. пардон, ничаяно 2 раза вставил

    PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );



    у меня в исходнике одна.. но сути это не меняет.. как не работало, так и не работает :(
  • Дмитрий Пырин (02.04.08 13:08) [31]
    если не трудно, попробуйте пожалуйста скомпилировать у себя , возможно у меня с компилятором проблемы ?

    я работаю на:

    Lazarus-0.9.23-fpc-2.2.0-20071019-win32
    fpc-2.2.0.arm-wince
    kolce_rev247
  • Дмитрий Пырин (02.04.08 13:16) [32]
    ошибка рантайма вылетает сразу при запуске.
    проблема явно в этой процедуре:

    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;



    если её содержимое закомментировать , то вылета ошибки рантайма нет.
  • Дмитрий К © (02.04.08 13:22) [33]

    > ошибка рантайма вылетает сразу при запуске.

    правильно. jpg-то не создан.
  • Дмитрий Пырин (02.04.08 13:34) [34]
    урааааа.. !!!!!!!!
    заработало.. всем спасибо :)


    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 ;//( Dummy : Pointer; Sender : PControl );
    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" :)
  • D[u]fa (02.04.08 14:17) [35]
    buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );

    Procedure OpenPic ;//( Dummy : Pointer; Sender : PControl );

    по-моему явная ошибка
  • GMax (02.04.08 22:55) [36]
    проще всего

    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, коли руки кривы :)
  • Дмитрий Пырин (03.04.08 07:15) [37]
    Я не жалуюсь на миррор, просто всю жизнь писал исключительно на ассемблере, и не привык к требованиям обьявления и инициализации переменных в ЯВУ. Поэтому и чистый КОL мне роднее и понятней :)
  • имя (29.05.08 23:36) [38]
    Удалено модератором
  • имя (30.05.08 03:12) [39]
    Удалено модератором
 
Конференция "KOL" » Где можно посмотреть пример работы с KOLJPGImage? [Lazarus, WinCE]
Есть новые Нет новых   [134431   +14][b:0][p:0.004]