fonksiyona ulaşamıyorum hata veriyor?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

fonksiyona ulaşamıyorum hata veriyor?

Mesaj gönderen forumsad »

Kod: Tümünü seç

function TIdModBusClient.WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;
var
  Data: array[0..0] of Word;
  bNewConnection: Boolean;
begin
  bNewConnection := False;
  if Value then
    Data[0] := 1
  else
    Data[0] := 0;

  if FAutoConnect and not Connected then
  begin
  {$IFDEF DMB_INDY10}
    Connect;
  {$ELSE}
    Connect(FConnectTimeOut);
  {$ENDIF}
    bNewConnection := True;
  end;

  try
    Result := SendCommand(mbfWriteOneCoil, RegNo, 0, Data);
  finally
    if bNewConnection then
      DisConnect;
  end;
end;
arkadaşlar yukardaki fonksiyona

mctPLC.WriteCoil(1,1); şeklinde değer göndrebilmem lazım ama hata alıyorum neyi yanlış yapıyorum acaba

saygılarımla

hatayı buldum ama çıkışı 1 yapmıyor
mctPLC.WriteCoil(1,True); //olarak hata vermiyor

bu konuda bilğisi olan var mı acaba

saygılar
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: fonksiyona ulaşamıyorum hata veriyor?

Mesaj gönderen sabanakman »

forumsad yazdı:function TIdModBusClient.WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;

mctPLC.WriteCoil(1,1); //<-Boolean tipinde değil, Integer tipinde parametre

mctPLC.WriteCoil(1,True);
Fonksiyonda tanımladığınız parametre değişken tipi boolean tipi olduğundan sadece True ve False değeri alabilir. Siz ise Integer tipli değişken göndermeye çalışmaktasınız. Haliyle bu da tip uyuşmazlığı hatasına sebep olur. Bunun yerine aynı isimde (overload anahtar sözcüğü ile) 2. bir fonksiyon daha tanımlayıp onunla ilk yazdığınız prosedürü çağırabilirsiniz.

Kod: Tümünü seç

function TIdModBusClient.WriteCoil(const RegNo: Word; const Value: Integer): Boolean;overload;
begin
  Result:=WriteCoil(RegNo,Boolean(Value));
end;

function TIdModBusClient.WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;overload;
var
  Data: array[0..0] of Word;
  bNewConnection: Boolean;
begin
  bNewConnection := False;
  if Value then
    Data[0] := 1
  else
    Data[0] := 0;

  if FAutoConnect and not Connected then
  begin
  {$IFDEF DMB_INDY10}
    Connect;
  {$ELSE}
    Connect(FConnectTimeOut);
  {$ENDIF}
    bNewConnection := True;
  end;

  try
    Result := SendCommand(mbfWriteOneCoil, RegNo, 0, Data);
  finally
    if bNewConnection then
      DisConnect;
  end;
end;
şeklinde tanımlı 2 fonksiyonunuz bulunursa derleyici parametrelerinizin tipine göre fonksiyonlardan uygun olanı çağıracaktır. Böylece fonksiyonu ister mctPLC.WriteCoil(1,1); kodu ile çağırın isterseniz de mctPLC.WriteCoil(1,True); ile çağırın ikisi de aynı kapıya çıkacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: fonksiyona ulaşamıyorum hata veriyor?

Mesaj gönderen forumsad »

teşekkürler hocam

sorun çözüldü...
Cevapla