Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - ';' erwartet, aber '.' gefunden (Was tun?)


miroh - Do 10.02.05 19:52
Titel: ';' erwartet, aber '.' gefunden (Was tun?)
hab kaum ahnung von delphi bzw. pascal und hab ein problem!
ich hab eine verzweigung geschrieben...


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:
procedure TForm1.B_RatenClick(Sender: TObject);
begin
  v_Eingabe := StrToInt(E_Eingabe.Text);
  IF v_Eingabe < v_zahl
  THEN
        BEGIN
  P_Ausgabe.Caption := 'zu klein';
        END
  ELSE
        BEGIN
  IF v_Eingabe = v_zahl
  THEN
        BEGIN
  P_Ausgabe.Caption := 'Richtig';
        END
  ELSE
        BEGIN
  P_Ausgabe.Caption := 'zu groß';
        END;


end;
end.


...und tauchen folgende fehlermeldungen auf...

[Fehler]U_Zahlenraten.pas(77):';' erwartet, aber '.' gefunden
[Fehler]U_Zahlenraten.pas(86):Deklaration erwartet, aber Dateiende gefunden

...und das letzte end, also 'end.' ist markiert!
was kann ich tun?
hoffe jemand kann mir helfen :wink:
jetzt schon mal DANKE!!!

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Fr 11.02.2005 um 10:35


F34r0fTh3D4rk - Do 10.02.05 19:54


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.B_RatenClick(Sender: TObject); 
begin 
  v_Eingabe := StrToInt(E_Eingabe.Text); 
  IF v_Eingabe < v_zahl 
  THEN 
    P_Ausgabe.Caption := 'zu klein'
  ELSE 
    IF v_Eingabe = v_zahl 
  THEN 
    P_Ausgabe.Caption := 'Richtig'
  ELSE 
    P_Ausgabe.Caption := 'zu groß'
END;


so müsste es stimmen :roll: jedenfalls vom syntax her :wink:


AXMD - Do 10.02.05 19:55

Ein END zuviel. Da dein Code aber furchtbar formatiert ist kann ich dir nichtmal sagen, welches END

AXMD


miroh - Do 10.02.05 19:57

vielen dank noch ma


F34r0fTh3D4rk - Do 10.02.05 19:58

geht es ?

Zitat:

Ein END zuviel. Da dein Code aber furchtbar formatiert ist kann ich dir nichtmal sagen, welches END

normal doch zu wenig oder? wenn ":" erwartet wird ?

ja die begins und ends werden eh nich gebraucht, verwirrt nur unnötig


der_zaehe - Do 10.02.05 20:44

mein tip für dich ist, falls so ein problem noch mal auftauchen sollte, den quelltext vernünftig zu formatieren, etwa so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  if Boolean1 = TRUE then
  begin
    //hier einrücken
  end
  else
  begin
    //hier einrücken
  end;


patrick - Do 10.02.05 21:10

F34r0fTh3D4rk hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.B_RatenClick(Sender: TObject); 
begin 
  v_Eingabe := StrToInt(E_Eingabe.Text); 
  IF v_Eingabe < v_zahl 
  THEN 
    P_Ausgabe.Caption := 'zu klein'
  ELSE 
    IF v_Eingabe = v_zahl 
  THEN 
    P_Ausgabe.Caption := 'Richtig'
  ELSE 
    P_Ausgabe.Caption := 'zu groß'
END;


so müsste es stimmen :roll: jedenfalls vom syntax her :wink:



nö, eben nicht.
ein ; vor einer else ist nämlich verboten.
außerdem fehlt dir in der tat ein end;, weil es 2 if verzweigungen in der prozedur gibt, aber nur eine mit end; abgeschlossen wurde.

hier mal mein vorschlag (inkl anderer formatierung):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.B_RatenClick(Sender: TObject);   
begin
  v_Eingabe := StrToInt(E_Eingabe.Text);
  if v_Eingabe < v_zahl then
  begin
    P_Ausgabe.Caption := 'zu klein';
  end
  else
  begin
    if v_Eingabe = v_zahl then
    begin
      P_Ausgabe.Caption := 'Richtig';
    end
    else
    begin
      P_Ausgabe.Caption := 'zu groß';
    end;
  end;
end;

abgesehen das ich solche sachen wie v_Zahl in VZahl bzw nen ausdruckstärkeren variablennamen benutzen. das ist aber jetzt absolut mein style ^^.

am übersichtlichsten lässt sich solcher code aber so schreiben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.B_RatenClick(Sender: TObject); 
begin
  v_Eingabe := StrToInt(E_Eingabe.Text);

  if v_Eingabe < v_zahl then
  begin
    P_Ausgabe.Caption := 'zu klein';
  end;

  if v_Eingabe = v_zahl then
  begin
    P_Ausgabe.Caption := 'Richtig';
  end;

  if v_Eingabe > v_zahl then
  begin
      P_Ausgabe.Caption := 'zu groß';
  end;
end;


CenBells - Fr 11.02.05 11:19

patrick hat folgendes geschrieben:
F34r0fTh3D4rk hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.B_RatenClick(Sender: TObject); 
begin 
  v_Eingabe := StrToInt(E_Eingabe.Text); 
  IF v_Eingabe < v_zahl 
  THEN 
    P_Ausgabe.Caption := 'zu klein'
  ELSE 
    IF v_Eingabe = v_zahl 
  THEN 
    P_Ausgabe.Caption := 'Richtig'
  ELSE 
    P_Ausgabe.Caption := 'zu groß'
END;


so müsste es stimmen :roll: jedenfalls vom syntax her :wink:



nö, eben nicht.
ein ; vor einer else ist nämlich verboten.
außerdem fehlt dir in der tat ein end;, weil es 2 if verzweigungen in der prozedur gibt, aber nur eine mit end; abgeschlossen wurde....

Hi,

was meinst du, welches End der Father denn überhaupt noch hingeschrieben hat? das prozedur end; . Man braucht in dem hier diskutierten code definitiv kein begin und end in jedem if then else block.

Also, nochmal die korrigierte Fassung ( ; ) ;)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.B_RatenClick(Sender: TObject); 
begin 
  v_Eingabe := StrToInt(E_Eingabe.Text); 
  IF v_Eingabe < v_zahl THEN 
    P_Ausgabe.Caption := 'zu klein'
  ELSE IF v_Eingabe = v_zahl THEN 
    P_Ausgabe.Caption := 'Richtig'
  ELSE 
    P_Ausgabe.Caption := 'zu groß'
END;


Gruß
Ken


F34r0fTh3D4rk - Fr 11.02.05 16:02

ohh da hab ich garnet drauf geachtet, hast natürlich recht, das ist übelst verboten !