Autor Beitrag
TotenHosen01
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 22.09.12 17:39 
Hey, bin neu beim programmieren und hab folgendes Problem,
bei diesem Ausschnitt


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 end //e2
                 else (D = 0)
                   begin  //b5
                   x1:= (b/(2*a));
                   lX1.Caption := FloatToStr(x1);
                   end;  //e5
            end  //e1
          else (a = 0//falls a=0 ist, 'nein'-Fall
            begin //b6
              if (b <> 0)[search] IN df
                then


soll bei dem begin //b5 und bei dem begin //b6 ein Operator oder Semikolon fehlen,
da aber vor einem else kein Semikolon hin darf, weiß ich nicht was daran falsch ist.

Moderiert von user profile iconMartok: Quote- durch Delphi-Tags ersetzt
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 22.09.12 17:56 
Hallo,
in Deinem Quelltextausschnitt sind einige Fehler.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
         else (D = 0)
                   begin  //b5
                   x1:= (b/(2*a));
                   lX1.Caption := FloatToStr(x1);
                   end;  //e5
            end  //e1
          else (a = 0//falls a=0 ist, 'nein'-Fall
            begin //b6
              if (b <> 0)[search] IN df
                then

Nach dem else steht (D = 0). Ist es ein Kommentar dann //(D = 0), soll es ein Test sein, so geht dies nur mit einem erneuten if ... then ... else
Das Gleiche gilt für das zweite else (a = 0) und ebenso für das Konstrukt

ausblenden Delphi-Quelltext
1:
if (b <> 0)[search] IN df					

Unklar sind vor allem [search] und df. Ist df eine Menge?
Um genauere Aussagen, auch zur logischen Struktur, zu geben, wäre es besser, wenn Du die ganze Prozedur/Methode veröffentlichen würdest.
Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
TotenHosen01 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 23.09.12 19:56 
ausblenden Delphi-Quelltext
1:
if (b <> 0)[search] IN df					

sorry, aber das war bei mir garnicht angegeben. Also das ist garnicht in meinem Text vorhanden. Ich weiß nicht wie das dahinkam.
Prozedur:
ausblenden volle Höhe 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:
  var
    a, b, c, D, x1, x2 : single; //nur reelle Zahlen

    begin // b0
      //variablen aus den Editfelder einlesen und umwandeln
       a := StrToFloat(eA.Text);
       b := StrToFloat(eB.Text);
       c := StrToFloat(eC.Text);
       lX1.Caption := '' ;
       lX2.Caption := '' ;
       lLoesungstext.Caption := '' ;

      //Verarbeitung - genau nach Struktogramm

        if (a <> 0)
          then //falls a <> 0 ist, 'ja'-Fall
            begin  //b1
             //sqr: square = Quadrat-Funktion
             D := sqr(b/(2*a)) - c/a;
               if (D <> 0//Diskriminante<>Null?
                 then //ja, dann
                   begin //b2
                     if (D > 0//gibt es zwei Lösungen?
                      then //es gibt zwei Lösungen
                        begin //b3
                         x1 := -b/(2*a)+sqrt(D);
                         x2 := -b/(2*a)-sqrt(D);
                         lX1.Caption := FloatToStr(x1);
                         lX2.Caption := FloatToStr(x2);
                        end  //e3
                      else //ansonsten gibt es keine Lösung
                        begin //b4
                        lLoesungstext.Caption := 'Es gibt keine reellen Lösungen.';
                        end;  //e4
                   end //e2
                 else (D = 0)
                   begin  //b5
                   x1:= (b/(2*a));
                   lX1.Caption := FloatToStr(x1);
                   end;  //e5
            end  //e1
          else (a = 0//falls a=0 ist, 'nein'-Fall
            begin //b6
              if (b <> 0)
                then // ja, dann...
                  begin //b7
                  x1 := -(c/b) ;
                  lX1.Caption := FloatToStr(x1);
                  end;  //e7
                    if (c <> 0)
                     then
                       begin //b8
                       lLoesungstext.Caption := 'Es gibt keine reellen Lösungen.';
                       end   //e8
                    else
                       begin //b9
                       lLoesungstext.Caption := 'Es gelten alle reellen Zahlen.';
                       end;  //e9
            end//e6


    end//e0

    end.


Moderiert von user profile iconMartok: Quote- durch Delphi-Tags ersetzt
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 23.09.12 20:18 
Hallo,

Hinter Deinen "else" stehen immer noch ungültige Zeichen, z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
else (D = 0
...
else (a = 0//falls a=0 ist, 'nein'-Fall

Entfernst Du dies, kommt keine Fehlermeldung mehr mit irgendwelchen fehlenden begin bzw. end.
Für die Zukunft wäre es besser, wenn Du Deinen Text als Delphi-Code kennzeichnen würdest.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 23.09.12 20:21 
meinst Du das?

ausblenden volle Höhe 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:
var
  a, b, c, D, x1, x2: single; // nur reelle Zahlen

begin // b0
  // variablen aus den Editfelder einlesen und umwandeln
  a := StrToFloat(eA.Text);
  b := StrToFloat(eB.Text);
  c := StrToFloat(eC.Text);
  lX1.Caption := '';
  lX2.Caption := '';
  lLoesungstext.Caption := '';

  // Verarbeitung - genau nach Struktogramm

  if (a <> 0then // falls a <> 0 ist, 'ja'-Fall
  begin // b1
    // sqr: square = Quadrat-Funktion
    D := sqr(b / (2 * a)) - c / a;
    if (D <> 0// Diskriminante<>Null?
      then // ja, dann
    begin // b2
      if (D > 0// gibt es zwei Lösungen?
        then // es gibt zwei Lösungen
      begin // b3
        x1 := -b / (2 * a) + sqrt(D);
        x2 := -b / (2 * a) - sqrt(D);
        lX1.Caption := FloatToStr(x1);
        lX2.Caption := FloatToStr(x2);
      end // e3
      else // ansonsten gibt es keine Lösung
      begin // b4
        lLoesungstext.Caption := 'Es gibt keine reellen Lösungen.';
      end// e4
    end // e2
    else if (D = 0then
      begin // b5
        x1 := (b / (2 * a));
        lX1.Caption := FloatToStr(x1);
      end// e5
  end // e1
  else if (a = 0then // falls a=0 ist, 'nein'-Fall
//else //geht auch // falls a=0 ist, 'nein'-Fall
    begin // b6
      if (b <> 0then // ja, dann...
      begin // b7
        x1 := -(c / b);
        lX1.Caption := FloatToStr(x1);
      end// e7
      if (c <> 0then
      begin // b8
        lLoesungstext.Caption := 'Es gibt keine reellen Lösungen.';
      end // e8
      else
      begin // b9
        lLoesungstext.Caption := 'Es gelten alle reellen Zahlen.';
      end// e9
    end// e6

end// e0

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
TotenHosen01 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 23.09.12 20:23 
okay, dankeschön (: