Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 22:23   #1
demonara
Пользователь
 
Регистрация: 24.05.2009
Сообщений: 25
По умолчанию pointer

как работает нетипизированные указатели для классов у меня вот что то не получается
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  Whitepawn = class(Timage)
  private
    public
    x:Byte;
    y:Byte;
     constructor Create(AOwner: TComponent); override;
    procedure push(Sender:Tobject);
  end;
  TForm1 = class(TForm)
    imgdesk: TImage;
    constructor Create(AOwner: TComponent); override;
    procedure imgdeskClick(Sender: TObject);
  private
    { Private declarations }
  public
    pos:Pointer;
    whitepawn1:Whitepawn;
    buffer:Boolean;
    sis:array[0..7,0..7] of Boolean;
    put:array[0..7,0..7] of Boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
constructor whitepawn.Create(AOwner: TComponent);
begin
  inherited  Create(AOwner);
  left:=50;
  top:=350;
  x:=left div 50;
  y:=top div 50;

end;
constructor TForm1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
whitePawn1:=Whitepawn.Create(Self);
whitePawn1.Parent:=Self;
Form1.whitePawn1.onclick:=whitePawn1.push;
whitepawn1.Picture.LoadFromFile('pawn.bmp');

end;
  procedure Whitepawn.push;
var

aux1,aux2:byte;
a:array[0..7,0..7] of boolean;
begin
 if form1.buffer=false then
  begin
 Form1.pos:=whitepawn;
  if form1.sis[x,y-1]=false then
    begin
	for aux1:=0 to 7 do
	for aux2:=0 to 7 do Form1.put[aux1,aux2]:=false;
	Form1.put[x,y-1]:=true;
  Form1.buffer:=True;
  end;
  end;
  if Form1.buffer then
  begin
    if Form1.put[x,y]=True then
    begin
      Form1.sis[Whitepawn(Form1.pos).left,Whitepawn(Form1.pos).TOp]:=False;
      Whitepawn(Form1.Pos).left:=x*50;
      Whitepawn(Form1.pos).Top:=y*50;
      visible:=False;
      Form1.buffer:=False;
    end;
  end;
  end;
   procedure TForm1.imgdeskClick(Sender: TObject);
   var
     pos1:whitepawn;
   bog:tpoint;
   aux1,aux2:Integer;
begin
if Form1.buffer then
  begin
  GetCursorPos(bog);
  aux1:=bog.x div 50;
  aux2:=(bog.y div 50)+1;
  pos1:=Whitepawn(Pos);


    if Form1.put[aux1,aux2]=True then
    begin
      Form1.sis[Whitepawn(Form1.pos).left,Whitepawn(Form1.pos).TOp]:=False;
      Form1.sis[aux1,aux2]:=true;
      Whitepawn(Form1.Pos).left:=aux1*50;
      Whitepawn(Form1.pos).Top:=aux2*50;
      Form1.buffer:=False;
    end;
  end;




end;

end.

Последний раз редактировалось Stilet; 25.11.2010 в 20:13.
demonara вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Pointer Operation csander Общие вопросы Delphi 0 21.10.2009 17:44
Pointer Superlotles Помощь студентам 5 12.10.2009 17:24
Указатель. Pointer AHTuKiLLeR Общие вопросы Delphi 6 27.05.2009 13:41
Invalid Pointer Operation Unconnected Общие вопросы Delphi 3 21.02.2009 20:23
handle <> pointer Altera Общие вопросы Delphi 8 08.10.2008 21:11