![]() |
Fehler: Constant expression expected
Wenn ich meinen Code so schreibe bekomme ich in der markierten Zeile die Fehlermeldung "Constant expression expected":
Delphi-Quellcode:
Schreibe ich dagegen
procedure TStein.zeichne();
begin case Typ of 0: Spielfeld.farbefestlegen(x,y,Farbe); Spielfeld.farbefestlegen(x+1,y,Farbe); // hier ist der fehler Spielfeld.farbefestlegen(x,y+1,Farbe); Spielfeld.farbefestlegen(x+1,y+1,Farbe);
Delphi-Quellcode:
funktioniert alles. Dabei ist es egal ob ich form1 schreibe oder irgendwas andres...
//...
with form1 do begin Spielfeld.farbefestlegen(x,y,Farbe); Spielfeld.farbefestlegen(x+1,y,Farbe); Spielfeld.farbefestlegen(x,y+1,Farbe); Spielfeld.farbefestlegen(x+1,y+1,Farbe); end; Spielfeld.farbefestlegen schaut so aus:
Delphi-Quellcode:
procedure TSpielfeld.farbefestlegen(x,y:byte;farbe:TColor);
begin with form1.Image1.Canvas do begin brush.Style:=bssolid; brush.color:=farbe; Rectangle(x*30,y*30,x*30+30,y*30+30); end; end; |
Re: Fehler: Constant expression expected
Zitat:
|
Re: Fehler: Constant expression expected
Anmerkung: Dein Klassenkonzept solltest du nochmal überdenken. Wenn du aus einer Klasse auf deine Form zugreifst, ist die Wiederverwendbarkeit kleiner/gleich 0 :wink: .
|
Re: Fehler: Constant expression expected
Ist mein erstes Programm das ich überhaupt objektorientiert schreibe... :???:
Ach du Schande wenn man eine mehrzeilige Anweißung hat braucht man da auch begin. Warum erklären Informatikbücher und die Delphi-Online-Hilfe case of nur mit einzeiligen Anweißungen. :wall: Dankeschön! |
Re: Fehler: Constant expression expected
Khabarakh meinte glaube ich, dass du die Klasse nicht als Unterklasse von TForm1, sondern als eigenständige Klasse machen sollst. (Im Quellcode einfach in der Implementation über die zeile mit "class TForm1 = (TForm)" (oä.) setzen....
Grüße Faux |
Re: Fehler: Constant expression expected
und...was macht das für einen Unterschied?
|
Re: Fehler: Constant expression expected
Zitat:
|
Re: Fehler: Constant expression expected
Wobei ganz unrecht hat er nicht. In C#, PHP, etc. braucht man bei switch auch kein begin und end (bzw { und }), sondern der code wird bis zum break ausgeführt. Insofern is es verwirrend, wenn man zB von C++ her kommt und Delphi mit dem Buch von fuisch lernen will. ;)
|
Re: Fehler: Constant expression expected
Zitat:
|
Re: Fehler: Constant expression expected
Delphi-Quellcode:
Hier greifst du aus einer Klasse auf die globale Formvariable zu. Damit geht die ganze Selbstständigkeit und Wiederverwendbarkeit der Klasse flöten. Stattdessen könntest du die Zeichenfläche z.B. per Parameter übergeben:
with form1 do begin
Spielfeld.farbefestlegen(x,y,Farbe);
Delphi-Quellcode:
procedure TStein.zeichne(Dest: TCanvas);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz