ActiveX türetme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kutal
Üye
Mesajlar: 48
Kayıt: 14 Kas 2005 10:48

ActiveX türetme

Mesaj gönderen kutal »

selam,
Bir ActiveX yazdım. indy udpserver kullanıyorum içinde. Port açma ve kapatma kodları aşağıdaki gibidir.
uygulama bir portu açıp, kullanıp kapatılınca sorunsuz. Ama birden fazla yaratıldığında sorun oluyor.
Bu ocx i .nette farklı sınıflar yaratıp çağırdğımda, açtığım portları dinleyip işlem yapabiliyorum ama portu kapat dediğimde enson açılan port kapatılıyor ve diğer portları kapatamıyorum. uygulamayı kapatmadan da bu portlar açık kalıyor. uygylamayı kapatırkende hata alıyorum tabii...

Bende OpenProt "if assigned(MyUdp) then showmessage("already created !")" diye bir code ekledim ve her yarattığımda bu mesajı alıyorum. Yani türettiğimi zannettiğim ocx aslında her seferinde MyUdp yi kullanıyor.

Aslında activex i bu haliyle kullanıp, kapatma fonsiyonundan bir parametreyle sadece parametredeki portu kapatabisem sorunum çözülecek ama yapamadım.

bu konuda yardımınızı ricaediyorum.

Kod: Tümünü seç

var
MyUDP:TIdUDPServer;


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function TaX.OpenProt(PORT: Integer): MyErr;
begin
Result:=ProcessDone;
  try
    MyUDP:=TIdUDPServer.Create(nil);
    MyUDP.SetSubComponent(TRUE);
    MyUDP.OnUDPRead:=OnReceive;
    MyUDP.DefaultPort:= Port;
    MyUDP.Binding.Port:= Port;
    MyUDP.ThreadedEvent:=True;
    MyUDP.Active:=true;
  except
    on E : Exception do
    begin
      result:=ConnectionError;
      exit;
    end;
  end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function TaX.CloseSys: MyErr;
begin
Result:=ProcessDone;
  try
    MyUDP.Destroy  ;
  except end;
end;
balıkçıdan balık isteme, balık tutmayı öğretmesini iste....
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: ActiveX türetme

Mesaj gönderen aslangeri »

s.a.
activex ler ile (ve TIdUDOServer ile) daha önce uğraşmadım ancak bu kodlar sabit bir değişkeni kullandığı için problem oluyor sanırsam.
MyUDP:TIdUDPServer i foksiyonlara var parametresi kullanarak gönderin şöyle

Kod: Tümünü seç

function TaX.OpenProt(PORT: Integer; var MyUDP:TIdUDPServer ): MyErr;
function TaX.CloseSys(var MyUDP:TIdUDPServer): MyErr;
bu fonksiyonları çağırdığınız yerdede gerekli düzenlemeleri yaparsanız probleminizin düzeleceği kanısındayım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla