Procedure, Function belirlemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Procedure, Function belirlemek

Mesaj gönderen naturelmania »

Arkadaşlar şöyle bir kod yazdım ama nerde yanlış yapıyorum? bir türlü çalıştıramadım.

Kod: Tümünü seç

procedure JD;
var
gun,ay,yil:extended;
saat,dakika,saniye:extended;
c:integer;
begin
        gun:=strtoint(copy(datetostr(date),1,2));
        ay:=strtoint(copy(datetostr(date),4,2));
        yil:=strtoint(copy(datetostr(date),7,4));
        gun:=strtoint(copy(timetostr(time),1,2));
        ay:=strtoint(copy(timetostr(time),4,2));
        yil:=strtoint(copy(timetostr(time),7,4));

        if ay=1 then C :=0;
        if ay=2 then C :=31;
        if ay=3 then C :=59;
        if ay=4 then C :=90;
        if ay=5 then C :=120;
        if ay=6 then C :=151;
        if ay=7 then C :=181;
        if ay=8 then C :=212;
        if ay=9 then C :=243;
        if ay=10 then C :=273;
        if ay=11 then C :=304;
        if ay=12 then C :=334;

        JD :=(2415020+(365*(Yil-1900))+C+gun+(((((Saniye/60)+Dakika)/60)+Saat)/24)+Int((Yil-1900)/4)-0.5);
end;
"left side can not be assaigned" hatası alıyorum.
İstediğim jd hesaplayan bir fonksiyon yazmak. Programın içinde nerde JD yazarsam orda bana bi extended halde Julian Date versin...
Bu yazdığım kodda nerede hata yapıyorum acaba???
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Kod: Tümünü seç

JD :=(2415020+(365*(Yil-1900))+C+gun+(((((Saniye/60)+Dakika)/60)+Saat)/24)+Int((Yil-1900)/4)-0.5);
"JD" diye tanımlı bir değişkenin yok...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Procedure diye tanımladığın başlığı

Kod: Tümünü seç

Function JD : Extended;
şeklinde değiştir istersen. Geriye değer döndürmek istiyorsan iki seçeneğin var. Ancak sadece JD yazınca extended değer görmek istiyorsan tek seçenek.

Kod: Tümünü seç

Function JD : Extended;
Resim
Resim ....Resim
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Re: Procedure, Function belirlemek

Mesaj gönderen TRSoft »

naturelmania yazdı:Arkadaşlar şöyle bir kod yazdım ama nerde yanlış yapıyorum? bir türlü çalıştıramadım.

Kod: Tümünü seç

procedure JD;
.....
        gun:=strtoint(copy(datetostr(date),1,2));
        ay:=strtoint(copy(datetostr(date),4,2));
        yil:=strtoint(copy(datetostr(date),7,4));
        gun:=strtoint(copy(timetostr(time),1,2));
        ay:=strtoint(copy(timetostr(time),4,2));
        yil:=strtoint(copy(timetostr(time),7,4));
.......
 JD :=(2415020+(365*(Yil-1900))+C+gun+(((((Saniye/60)+Dakika)/60)+Saat)/24)+Int((Yil-1900)/4)-0.5);
end;
@mrarman hocamın söylediği gibi function kullanmalısın ayrıca yukarıda aldığım kod parçasında saat,dakika, saniye değişkenlerini eşitlemek yerine gun,ay,yil değişkenlerine tekrar değer atamışsın..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Mesaj gönderen naturelmania »

Arkadaşlar cevaplarınız için teşekkür ederim. Function ve procedure'u yeni yeni öğreniyomuşum :)
Function JD: extended;
kullandım ve sorunum çözüldü. Ayrıca @TRSoft uyardığın için teşekkür ederim :D ben de niye hatalı hesaplıyo diyodum gözümden kaçmış ;)
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

ek olarak

////////////////////////////////////
Procedure JuliandateToDate(juliandate:Integer);
var day,month,year:integer;
Begin
Year := INT((4 * JulianDate - 1) / 1461);
Day := (4 * JulianDate - 1) - (1461 * Year);
Day := INT((Day + 4) / 4);
Month := INT((5 * Day - 3) / 153);
Day := 5 * Day - 3 - 153 * Month;
Day := INT((Day + 5) / 5);
IF Month < 10 THEN
Month := Month + 3;
ELSE
Begin
Month := Month - 9;
Year := Year + 1;
End;
End;
////////////////////////////////////
procedure DateToJulianDate(day,month,year:Integer);
var juliandate:Integer;
Begin
IF Month <= 2 THEN begin
Month := Month + 9;
Year := Year - 1;
end
ELSE
begin
Month := Month - 3;
End;
JulianDate := INT((1461 * Year) / 4) + INT((153 * Month + 2) / 5) + Day;
End;
////////////////////////////////////

http://www.delphi3000.com
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla