![]() |
Inkompatble Typen???
Hallo leute,
Ich bin neu hier und habe mir gedacht das ihr mir vielleicht bei meinem kleinem Problem helfen könnt :wink: .
Delphi-Quellcode:
In dieser Zeile
procedure TForm1.Btn_ausfuehrenClick(Sender: TObject);
var monat,tage,jahr:integer; Jzahl:integer; begin monat:=strtoint(Edt_monat.text); jahr:=strtoint(Edt_jahr.text); Edt_tage.text:=inttostr(tage); case monat of 1,3,5,7,8,10,12:tage:= 31; 4,6,9,11:tage:=30; end; If ((Jzahl mod 4) = 0) then begin case monat of 2:tage:=29; end end else begin If (((Jzahl mod 100)= 0 and (Jzahl mod 400)) <> 0) then begin case monat of 2:tage:=28; end end else begin case monat of 2:tage:=29; end; end; end; end; end.
Delphi-Quellcode:
bekomm ich folgende Fehlermeldung: E2008 Inkompatible Typen
If (((Jzahl mod 100)= 0 and (Jzahl mod 400)) <> 0) then
Meine Frage ist nun wo ist der Fehler? Ich find irgendwie keinen und versteh auch nicht warum er Inkompatible Typen als Fehlermeldung bringt. Schon mal Danke für eure hilfe!! mfg Sankar :???: |
Re: Inkompatble Typen???
du hast einfach nur die Klammern falsch gesetzt bzw. fehlen welche. Einfach mal so klammern dass, das "and" einzeln steht
Delphi-Quellcode:
denn bei dir steht im Moment
if ((Bedigung1) and (Bedingung2)) then
Delphi-Quellcode:
Somit wird wirkt das "and" auf die Bits der beiden Bedingungen was nicht geht.
if (Bedingung1 and Bedingung2) then
|
Re: Inkompatble Typen???
Oh stimmt ja :) Vielen Dank!!
Mal noch eine andere Frage.
Delphi-Quellcode:
Warum verlangt Delphi dort ein "end;", wenn dadurch doch die Prozedure zu früh beendet wird und somit man 2 klicks auf den Button braucht damit er das Ergebnis ausrechnet? Lass ich das "end;" weg so bringt er mir die Fehlermeldung: @ erwartet, aber If erhalten in Zeile 49.
begin
monat:=strtoint(Edt_monat.text); jahr:=strtoint(Edt_jahr.text); Edt_tage.text:=inttostr(tage); case monat of 1,3,5,7,8,10,12:tage:= 31; 4,6,9,11:tage:=30; end; Zeile49:
Delphi-Quellcode:
zusätzlich noch folgende fehlermeldungen:
If ((Jzahl mod 4) = 0) then
zeile77:E2026 Konstantenausdruck erwartet zeile78:E2018 Record,Objekt oder Klassentyp erforderlich zeile80:E2029 END, erwartet aber Dateiende gefunden Zeile 77 und 78 steht jeweils ein "end;" und zeile 80 steht nichts dain zeile 79 "end." steht. Werde daraus absolut nicht schlau. Hoffe du kannstm ir da weiterhelfen. mfg Sankar |
Re: Inkompatble Typen???
Hallo,
tja, wenn du das anständig formatieren würdest .. ;)
Delphi-Quellcode:
Du siehst, ein case will auch ein end haben.
procedure Test;
begin case bla of 1: begin end; { 1 } 2: begin end; { 2 } end; { case bla of } end; { Test } Die begin/end bei den case-Zweigen schreibe ich übrigens immer, weil oft nicht nur eine Code-Zeile reinkommt, sondern die Sache erweitert wird. Dein Code für Tage im Monat würde ich übrigens auslagern, den brauchst du vielleicht noch an anderen Stellen.
Delphi-Quellcode:
function DaysOfMonth (theYear, theMonth: Word): Byte;
begin Result:= 0; case theMonth of 4,6,9,11 : Result:= 30; 1,3,5,7,8,10,12: Result:= 31; 2: begin if (theYear mod 4=0) and ((theYear mod 100<>0) or (theYear mod 400=0)) then Result:= 29 { leap year } else Result:= 28; end; end; { case theMonth of } end; { DaysOfMonth } Heiko |
Re: Inkompatble Typen???
Poste mal die ganze Funktion
[Edit: habs übersehen] |
Re: Inkompatble Typen???
Vielen Dank!!!! Werde in Zukunft auf saubere Formatierung achten :wink: !!
mfg Sankar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz