Dll Canvas

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Dll Canvas

Mesaj gönderen CiTiZEN »

Selamlar arkadaşlar bir uygulamada Dll içerisinden dll in bağlı oldugu formdaki image nesnesine çizim yaptırmam gerekiyor kullandığım kod aşağıda verdiği hata ise access violation hatası, canvas nesnesi oluşturmama ragmen neden bu hatayı verdiğini birtürlü bulamadım:

Kod: Tümünü seç

(DLL) PROCEDURE DRAWEX;EXPORT;
VAR C:TCanvas;
BEGIN
C:=TCanvas.Create;
c:=Form1.Draw.Canvas;
with c do
begin
moveto(0,0);
lineto(0,100);
end;
END;
EXPORTS
DRAWEX;

(EXE)
PROCEDURE DRAWEX;EXTERNAL'DRAW.DLL';
procedure Form1.Button2Click(Sender: TObject);
begin
DRAWEX;
end;
yapmam gereken başka şeylerde mi var?
UWESIS CORPORATION
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Dll Canvas

Mesaj gönderen emin_as »

Dll form1 i bilemez. Form1 uygulamana ait hafızada tutulan bir değişken.
Form1 in canvasının device contextini parametre olarak geçebilirsin.

Canvasın free edilip, edilmemesi gerektiğini bilmiyorum.

Eğer canvas free edilirken devicecontextini release ederse, sorun yaşayabilirsin.

Kod: Tümünü seç

procedure drawex (aHdc: HDC);export;
var
  c: TCanvas;
begin
   c:=TCanvas.Create;
   c.Handle:=aHDc;
   // draw işlemlerini yap
end;
//Çagırırken
drawex(form1.canvas.handle);

Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Dll Canvas

Mesaj gönderen CiTiZEN »

tamamdır @Emin_As Hocam çok teşekkür ederim.
UWESIS CORPORATION
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Dll Canvas

Mesaj gönderen CiTiZEN »

son hali budur:

Kod: Tümünü seç

procedure drawex(aHdc: HDC);export;
var
  c: TCanvas;
begin
   c:=TCanvas.Create;
   c.Handle:=aHDc;
   with c do
   begin
     MoveTo(0,100);
     LineTo(100,0);
   end;
   // draw işlemlerini yap
   c.Free;
   end;
exports
drawex;
sonunda free etmezseniz exe nin kapanışında access hatası veriyor.
UWESIS CORPORATION
Cevapla