Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Inkompatble Typen??? (https://www.delphipraxis.net/80482-inkompatble-typen.html)

Sankar 9. Nov 2006 15:47


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:
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.
In dieser Zeile
Delphi-Quellcode:
     If (((Jzahl mod 100)= 0       and   (Jzahl mod 400)) <> 0) then
bekomm ich folgende Fehlermeldung: E2008 Inkompatible Typen

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 :???:

SirThornberry 9. Nov 2006 15:51

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:
if ((Bedigung1) and (Bedingung2)) then
denn bei dir steht im Moment
Delphi-Quellcode:
if (Bedingung1 and Bedingung2) then
Somit wird wirkt das "and" auf die Bits der beiden Bedingungen was nicht geht.

Sankar 9. Nov 2006 16:07

Re: Inkompatble Typen???
 
Oh stimmt ja :) Vielen Dank!!

Mal noch eine andere Frage.

Delphi-Quellcode:
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;
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.

Zeile49:
Delphi-Quellcode:
 If ((Jzahl mod 4) = 0) then
zusätzlich noch folgende fehlermeldungen:
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

hoika 9. Nov 2006 16:14

Re: Inkompatble Typen???
 
Hallo,

tja, wenn du das anständig formatieren würdest .. ;)

Delphi-Quellcode:
procedure Test;
begin
  case bla of
    1:
      begin
      end; { 1 } 
    2:
      begin
      end; { 2 } 
  end; { case bla of }
end; { Test }
Du siehst, ein case will auch ein end haben.
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

mkinzler 9. Nov 2006 16:14

Re: Inkompatble Typen???
 
Poste mal die ganze Funktion
[Edit: habs übersehen]

Sankar 9. Nov 2006 16:30

Re: Inkompatble Typen???
 
Vielen Dank!!!! Werde in Zukunft auf saubere Formatierung achten :wink: !!

mfg Sankar


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz