case BoolFunc() of True: showmessage('true'); False: showmessage('false'); else showmessage('else'); end;
Yukarıdaki kodun nasıl bir çıktı vereceğini tahmin edebilirmisiniz?
Tabikide boolean iki tür değer taşıyabilir (True,False) ve bu fonksiyonda bu iki durumdan başka bir çıktı üretmez diye düşünebilirsiniz ama aşağıdaki gibi bir fonksiyon yazsam çıktı else olacaktır.
function BoolFunc:Boolean begin end;
Delphide yazdığımız fonksiyonlarda istersek result ataması yapmadanda kodu derleyebiliyoruz.
C#,java gibi başka programlama dilleri yukardaki kodun derlenmesine izin vermezler ama delphi de sorun olmuyor.
Delphi bu durumda sadece aşağıdaki gibi bir uyarı veriyor.
[DCC Warning] W1035 Return value of function 'BoolFunc' might be undefined.
Buradanda anlaşılıyorki derleyicinin ürettiği mesajları okumak çok önemlidir. Ve yazdığınız fonksiyonların her durumda bir değer üretmesini sağlamalıyız.
RSS feed for comments on this post. TrackBack URL
dönüş tipine neden boolean yazdık o zaman, bu bence iyi birşey değil.
var a:Boolean; begin a := BoolFunc; case a of True: showmessage('true'); False: showmessage('false'); else showmessage(BoolToStr(a)); end; end;bunu debug modda incelediğimizde a True görünüyor ama BoolToStr fonksiyonuna girince de “Access violation”. Tam bir komedi (=
bir deneme daha .
if BoolFunc then ShowMessage('is Bool and True') else ShowMessage('what ? ');burdaa da BoolFunc true dönderiyor. çok ilginç gerçekten.
ataması yapılmamış bir bool değer olabilir mi?. boolean nullable bir tip mi ?. boolean bir değişkene atama yapmayınca neden true oluyor.
ayrıca bu ornekte de a ture oluyor
var a:boolean; if a then showmessage('a is true');