tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
743
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HoLLoWManN HoLLoWManN ist offline Grünschnabel
    Registriert seit
    Jan 2004
    Beiträge
    4
    Code :
    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
    
    unit Unit1;
     
    interface
     
    uses
      SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
      Forms, Dialogs, StdCtrls, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        Zahl1Edit: TEdit;
        Zahl2Edit: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Button2: TButton;
        ErgebnisPanel: TPanel;
        Zahl3Edit: TEdit;
        Label3: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.DFM}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var       Zahl1,Zahl2,Zahl3,m : Real;
    begin
         Zahl1:=StrToFloat(Zahl1Edit.Text);
         Zahl2:=StrToFloat(Zahl2Edit.Text);
         Zahl3:=StrToFloat(Zahl3Edit.Text);
         if Zahl1=Zahl2
            then m:=Zahl1;
            if m=Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 = Zahl3 '
            else if m<Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 < Zahl3 '
            else ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 > Zahl3 ';
         if Zahl1<Zahl2
            then m:=Zahl2;
            if m=Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 < Zahl 2 = Zahl3 '
            else if m<Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 < Zahl 2 < Zahl3 '
            else ErgebnisPanel.Caption:=' Zahl 1 < Zahl 2 > Zahl3 ';
         if Zahl1>Zahl2
            then m:=Zahl2;
            if m=Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 > Zahl 2 = Zahl3 '
            else if m<Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 > Zahl 2 < Zahl3 '
            else ErgebnisPanel.Caption:=' Zahl 1 > Zahl 2 > Zahl3 ';
     
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
         close
    end;
     
    end.

    Es wird angezeigt Variable m might not be initialized

    es startet trotzdem vergleicht aber immer nur die 2. und 3. Zahl, ich hab ka voran das liegen soll, in der Schule hats genauso mit Delphi 5 noch geklappt bei mir zuhause mit Delphi 7 nicht mehr.
     

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Hi

    m might not be initialized

    meint: Es könnte sein, dass m verwendet wird, bevor m initialisiert wurde,

    Aufgrund der vielen if - Verzweigungen kann der Compiler nicht feststellen, ob m vor der ersten Belegung initialisiert wurde.
    Du könnstest diese Warnung (kein Fehler) umgehen, indem du m vor den Verzweigungen bspw. mit 0 initialisierst. Das ist aber unerheblich.

    Dein Problem ist aber wohl, dass Du die einzelnen if-Verzweigungen zwar verschachtelt eingerückt hast, sie aber anders ausgeführt werden, weil du begin ... end vergessen hast.

    Code :
    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
    
     if Zahl1=Zahl2
            then m:=Zahl1;
            if m=Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 = Zahl3 '
            else if m<Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 < Zahl3 '
            else ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 > Zahl3 ';
     
    ist nämlich das gleiche wie
     
    if Zahl1=Zahl2 then m:=Zahl1;
    if m=Zahl3 hen ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 = Zahl3 '
      else 
        if m<Zahl3 then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 < Zahl3 '
        else ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 > Zahl3 ';
     
    Du meinst aber sicher:
    if Zahl1=Zahl2 then
    begin  
        m:=Zahl1;
        if m=Zahl3
        then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 = Zahl3 '
         else if m<Zahl3
            then ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 < Zahl3 '
            else ErgebnisPanel.Caption:=' Zahl 1 = Zahl 2 > Zahl3 ';
    end;
     
    etc.
     vop
     

  3. #3
    HoLLoWManN HoLLoWManN ist offline Grünschnabel
    Registriert seit
    Jan 2004
    Beiträge
    4
    danke
    jetzt klappt alles
     

  4. #4
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Dann setze doch bitten den Status auf erledigt, Danke

    vop
     

Ähnliche Themen

  1. [Delphi] Memo mit Delphi-Code ?
    Von mmuhbllaaa im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 16.08.10, 06:15
  2. Zahlenvergleich stimmt nicht
    Von Zero2000 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 12.08.08, 10:24
  3. Zahlenvergleich
    Von HarryXVI im Forum Delphi, Kylix, Pascal
    Antworten: 3
    Letzter Beitrag: 16.06.08, 17:56
  4. Zahlenvergleich oder Sortieren?
    Von dreamsahin im Forum Delphi, Kylix, Pascal
    Antworten: 8
    Letzter Beitrag: 27.01.07, 16:58
  5. Antworten: 1
    Letzter Beitrag: 18.10.04, 16:12