Judil - Do 23.03.06 22:20
Titel: Programm mit vielen "Function" geht nicht... Hilfe!!!
Hab ein Problem und zwar hab ich ein Quelltext von unseren Lehrer versteh auch alles, nur an einer Stelle ist ein Fehler. Versteh das nicht da steht "Inkompatible Typen: "Boolean" und "Integer" und zwar bei der Function
"function TageImMonat(pMonat, pJahr : integer) : boolean;"
Hier mal der ganze Quelltext, der Fehler befindet sich in den Zeilen 15,17,18,19,20
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| function istSchaltjahr(pJahr : integer) : boolean; begin if pJahr mod 4 <> 0 then result:=false else if pJahr mod 100 <> 0 then result:= true else if pJahr mod 400 = 0 then result:=true else result:=false; end;
function TageImMonat(pMonat, pJahr : integer) : boolean; begin case pMonat of 1,3,5,7,8,10,12 : result:=31; 2 : if istSchaltjahr(pJahr) then result:=29 else result:=28; 4,6,9,11 : result:=30; else result:=0; end; end;
function istGueltig(pTag, pMonat, pJahr : integer) : boolean; begin if pJahr < 1582 then result:=false else if (pJahr = 1582) and (pMonat < 10) then result:=false else if (pJahr = 1582) and (pMonat = 10) and (pTag < 15) then result:=false else if (pTag < 1) and (pMonat < 1) then result:=false else if (pMonat > 12) and (pMonat > TageImMonat(pMonat ,pJahr)) then result:=false else result:=true; end;
function Wochentag(pTag, pMonat, pJahr : integer) : integer; var JH, j, z : integer; begin if pMonat < 3 then begin pMonat:=pMonat + 12; pJahr :=pJahr - 1; end; JH:=pJahr div 100; j :=pJahr mod 100; z :=(pTag + (pMonat+1) * 26 div 10 + 5*j div 4 - 2*JH - 1) mod 7; if z < 0 then z:=z + 7; end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var Jahr : integer; begin Jahr:=StrToInt(EdJahr.text); if istSchaltjahr(Jahr) then EdErgebnis.text:='Schaltjahr' else EdErgebnis.text:='Kein Schaltjahr' end; |
Danke, freue mich über schnelle Hilfe...
Judil - Do 23.03.06 22:43
Hab ich mir schon fast gedacht, unser Lehrer hat das schnell geschrieben, der ist sowieso ein Freak *hehe*
Wenn ich Boolean durch Integer müsste es ja klappen, probier es gleich mal...
Nachher kommen noch 2 Fragen, wegen neuen Function...
1. Wie kann ich das machen 3 Editfenster >Tag< >Monat< >Jahr< und jetzt soll der den nächsten Tag angeben,
mit berücksichtigung von Schaltjahr und allen, dh wenn 31.12.2001 dann soll der 1.1.2002 ausgeben
2. Die zweite Function sollte sein, dass man 6 Editfenster hat 2 mal jeweils >Tag< >Monat< >Jahr<
dann soll die x Tage unterschied ausgeben, also in Tagen (muss nicht mit Tage, Monat,Jahr sein)
Wenn einer Lust hat mir zuhelfen, wär ich sehr Dankbar...
Also immer her mit der Hilfe... :lol:
-----------------------------------------------------------------------------------------------------------
EDIT:
Hier nochmal mein vervollständigter Quelltext, hier kalppt gar nichts mehr
Könnt es ja mal selber testen Ihr braucht 3 Button und 4 Editfenster (mit den Namen "EdTag" , "EdMonat" ,
"EdJahr" , "EdErgebnis")
Danke brauch schnelle Hilfe...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
| implementation
function istSchaltjahr(pJahr : integer) : boolean; begin if pJahr mod 4 <> 0 then result:=false else if pJahr mod 100 <> 0 then result:= true else if pJahr mod 400 = 0 then result:=true else result:=false; end;
function TageImMonat(pMonat, pJahr : integer) : integer; begin case pMonat of 1,3,5,7,8,10,12 : result:=31; 2 : if istSchaltjahr(pJahr) then result:=29 else result:=28; 4,6,9,11 : result:=30; else result:=0; end; end;
function istGueltig(pTag, pMonat, pJahr : integer) : boolean; begin if pJahr < 1582 then result:=false else if (pJahr = 1582) and (pMonat < 10) then result:=false else if (pJahr = 1582) and (pMonat = 10) and (pTag < 15) then result:=false else if (pTag < 1) and (pMonat < 1) then result:=false else if (pMonat > 12) and (pMonat > TageImMonat(pMonat ,pJahr)) then result:=false else result:=true; end;
function Wochentag(pTag, pMonat, pJahr : integer) : integer; var JH, j, z : integer; begin if pMonat < 3 then begin pMonat:=pMonat + 12; pJahr :=pJahr - 1; end; JH:=pJahr div 100; j :=pJahr mod 100; z :=(pTag + (pMonat+1) * 26 div 10 + 5*j div 4 - 2*JH - 1) mod 7; if z < 0 then z:=z + 7; end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var Jahr : integer; begin Jahr:=StrToInt(EdJahr.text); if istSchaltjahr(Jahr) then EdErgebnis.text:='Schaltjahr' else EdErgebnis.text:='Kein Schaltjahr' end;
procedure TForm1.Button2Click(Sender: TObject); var Jahr, Monat : integer; begin Jahr :=StrToInt(EdJahr,text); Monat:=StrToInt(EdMonat,text); EdErgebnis.text:=IntToStr(TageImMonat(Monat, Jahr)); end;
procedure TForm1.Button3Click(Sender: TObject); var Tag, Monat, Jahr : integer; begin Tag :=StrToInt(EdTag.text); Monat:=StrToInt(EdMonat.text); Jahr :=StrToInt(EdJahr.text); if istGueltig(Tag, Monat, Jahr) then EdErgebnis.text:='Gültig' else EdErgebnis.text:='Ungültig' end; |