illegal expression

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Laz_Anfänger
Beiträge: 2
Registriert: Di 19. Aug 2014, 20:50

illegal expression

Beitrag von Laz_Anfänger »

Hey ihr :)

ich muss ein Projekt machen und hab dafür noch viel zu wenig Ahnung von dem Programm :(

Bei Doppelklick auf ein Edit-Feld kommt ja automatisch der Rumpf für ne Prozedur:
procedure TForm1.ED_AnzahlChange(Sender: TObject);

Wenn ich das Programm aber starten will bringt er mir die Nachricht 'illegal expression'.
Kann mir jemand sagen wo da der Fehler liegt?

Daaaanke schon mal für die Hilfe :)

wp_xyz
Beiträge: 5135
Registriert: Fr 8. Apr 2011, 09:01

Re: illegal expression

Beitrag von wp_xyz »

Nein, da musst du schon mehr zeigen

Laz_Anfänger
Beiträge: 2
Registriert: Di 19. Aug 2014, 20:50

Re: illegal expression

Beitrag von Laz_Anfänger »

die komplette Prozedur ist

Code: Alles auswählen

procedure TForm1.ED_AnzahlChange(Sender: TObject);
// Pruefen, ob Eingabe für Anzahl-Wert eine ganze Zahl ist
// die >= 6 und <= 12 ist, sonst Fehlermeldungen
// und Focus auf ED_Anzahl
Var
    Anzahl : Single;        // Anzahl der Mannschaften
begin
    Try Anzahl:=StrToInt(ED_Anzahl.Text);
    Except ED_Anzahl.SetFocus; raise;
    end; // Try
    If (Anzahl < 6) or (Anazhl > 12)
    Then Begin
           ShowMessage(ED_Anzahl.Text +
           ' liegt nicht im erlaubten Wertebereich!');
           ED_Anzahl .SetFocus;
         end; // Then
end; // Procedure
Zuletzt geändert von Lori am Do 21. Aug 2014, 12:06, insgesamt 1-mal geändert.
Grund: Highlighter

wp_xyz
Beiträge: 5135
Registriert: Fr 8. Apr 2011, 09:01

Re: illegal expression

Beitrag von wp_xyz »

StrToInt erzeugt aus einem String einen Integer, der Zieldatentyp ist aber bei dir ein Single. Wahrscheinlich meinst du

Code: Alles auswählen

 
var
  Anzahl: Integer;
 
Ein Tipp noch: Wenn du den gezeigten Quelltext mit "code=laz" und "/laz", jeweils mit eckigen Klammern statt den Anführungzeichen, einschließt (oder den Text markierst und in der Combobox über dem Eingabefeld hier den Highlighter FreePascal/Lazarus auswählts), wird der Text nach Pascal-Syntax formatiert und ist leichter lesbar.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: illegal expression

Beitrag von theo »

Da ist zwar einiges Merkwürdig, auch:

Code: Alles auswählen

 (Anazhl > 12)
Aber eine "illegal expression" sehe ich nicht.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: illegal expression

Beitrag von m.fuchs »

illegal expression bekomme ich nicht, sondern erstmal ein

Code: Alles auswählen

unit1.pas(40,31) Error: Identifier not found "Anazhl"
Wenn man das mal korrigiert, wird man feststellen, dass es eine ganze Menge invalid integer kassiert. Sofern keine Zahl eingegeben wird. Mit einer Zahl, die nicht im Bereich liegt, wird es auch unschön.

Warum nimmst du nicht einfach ein TSpinEdit und begrenzt dort den Wertebereich?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6910
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: illegal expression

Beitrag von Mathias »

Ich würde auf einen Tipfehler tippen.

Code: Alles auswählen

procedure TForm1.ED_AnzahlChange(Sender: TObject);
// Pruefen, ob Eingabe für Anzahl-Wert eine ganze Zahl ist
// die >= 6 und <= 12 ist, sonst Fehlermeldungen
// und Focus auf ED_Anzahl
Var
Anzahl : Single; // Anzahl der Mannschaften
begin
Try Anzahl:=StrToInt(ED_Anzahl.Text);
Except ED_Anzahl.SetFocus; raise;
end; // Try
If (Anzahl < 6) or (Anazhl > 12)  // -------- Tipfehler ------------
Then Begin
ShowMessage(ED_Anzahl.Text +
' liegt nicht im erlaubten Wertebereich!');
ED_Anzahl .SetFocus;
end; // Then
end; // Procedure
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten