W1012 Constant expression violates subrange bounds uyarısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

W1012 Constant expression violates subrange bounds uyarısı

Mesaj gönderen PROGRAMADOR »

Merhaba,

Aşağıdaki kodu çalıştırdığımda "[dcc64 Warning] server.pas(79): W1012 Constant expression violates subrange bounds" şeklinde uyarı alıyorum.

Kod: Tümünü seç

var
  NonBlock:cardinal;
  ...
  NonBlock:=1;
  if ioctlsocket(ChannelInfo.serverSock,FIONBIO,NonBlock) = SOCKET_ERROR then begin
    ShowMessage('Socket nonblock error!');
    WSACleanup;
    Halt;
  end;

Bu hatanın sebebi FIONBIO sabitinin integer maximum limitini aşması nedeniyle. ioctlsocket fonksiyonu ikinci parametresini integer alıyor ve integer'in maksimum değeri bildiğiniz üzere 2,147,483,647. FIONBIO sabiti 2.147.772.030. Bu uyarıdan tür dönüştürme (typecasting) haricinde nasıl kurtulabilrim?
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
ertank
Üye
Mesajlar: 1414
Kayıt: 12 Eyl 2015 12:45

Re: W1012 Constant expression violates subrange bounds uyarısı

Mesaj gönderen ertank »

Merhaba,

Başka bir yolu yok. Veri türlerini eşlemelisiniz.

Detaylı bilgiyi aşağıdaki bağlantıda bulabilirsiniz.
http://docwiki.embarcadero.com/RADStudi ... is%20error.
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: W1012 Constant expression violates subrange bounds uyarısı

Mesaj gönderen PROGRAMADOR »

Teşekkür ederim ilginize.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla