Class - Access violation sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Class - Access violation sorunu

Mesaj gönderen qamyoncu »

Kod: Tümünü seç

TCell = class(TObject)
    FDown: Integer; 
    FUp: Integer;    
    FRow: Integer;  
    FCol: Integer; 
    ItemCount: Integer;          
    Items: Array of TItem;       
    procedure Create(C, R: Integer);
    procedure AddItem(FItem: TItem);  
    procedure Draw(Parent: TImage);
  published
    property Row: Integer read FRow write FRow;
    property Col: Integer read FCol write FCol;
    property Down: Integer read FDown write FDown;
    property Up: Integer read FUp write FUp;
  end;

procedure TCell.AddItem(FItem: TItem);
begin
SetLength(Items,ItemCount+1);
Items[ItemCount]:=FItem;
Inc(ItemCount);
end;

procedure TCell.Create(C, R: Integer);
begin
Row:=R;
Col:=C;
SetLength(Items,0);
end;

procedure TCell.Draw(Parent: TImage);
var
i: Integer;
begin
for i := 0 to ItemCount-1 do
  begin
    Parent.Canvas.TextOut(FIXED_WIDTH+CELL_WIDTH*Col+1,FIXED_HEIGHT+CELL_HEIGHT*Row+20*i+1,Items[i].Text);
  end;
end;

Kod: Tümünü seç

Cell.Create(1,2);
yazdığımda Create method'unun ilk satırında access violation hatası alıyorum. Acaba nedendir?
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Class - Access violation sorunu

Mesaj gönderen qamyoncu »

Çok ilginç..

Global tanımladığım TCell değişkenlerinde access violation alırken, Button1Click gibi method içi tanımladığım değişkenlerde bu hatayı almıyorum. Global değişkenlere erişimi engelleyen nedir arkadaşlar?
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Class - Access violation sorunu

Mesaj gönderen emin_as »

Cell:=TCell.Create(1,2);
olarak dener misin.

Cell.create ile çagrı yapıyorsun, ama cell henuz yaratılmamış durumda.
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Class - Access violation sorunu

Mesaj gönderen qamyoncu »

This form of method call only allowed for class methods
:?
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Class - Access violation sorunu

Mesaj gönderen sabanakman »

procedure Create... olarak değil, constructor Create ... olarak tanımlayın

Kod: Tümünü seç

constructor Create(C, R: Integer);
Nesnenizi bu metotla oluşturup değişkene atayın.

Kod: Tümünü seç

var Cell:TCell;
begin
  Cell:=TCell.Create(1,2);
gibi..
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Class - Access violation sorunu

Mesaj gönderen qamyoncu »

En acı verici olanı, denemiş ve düzgün çalışmadığına kanaat getirmiş olmama rağmen o(söylediğiniz) kodun çalışması..

Teşekkür ediyorum.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Cevapla