Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
qamyoncu
Üye
Mesajlar: 266 Kayıt: 12 Tem 2008 04:30
Mesaj
gönderen qamyoncu » 02 Kas 2010 11:01
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;
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
Mesaj
gönderen qamyoncu » 02 Kas 2010 11:31
Ç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:
Mesaj
gönderen emin_as » 02 Kas 2010 11:46
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
Mesaj
gönderen qamyoncu » 02 Kas 2010 12:15
This form of method call only allowed for class methods
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
sabanakman
Kıdemli Üye
Mesajlar: 3081 Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)
Mesaj
gönderen sabanakman » 04 Kas 2010 11:24
procedure Create... olarak değil, constructor Create ... olarak tanımlayın
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
Mesaj
gönderen qamyoncu » 05 Kas 2010 06:00
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..'