AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Konstantenausdruck in case-Verzweigung erwartet
Thema durchsuchen
Ansicht
Themen-Optionen

Konstantenausdruck in case-Verzweigung erwartet

Ein Thema von Phil.I.Am · begonnen am 13. Okt 2008 · letzter Beitrag vom 17. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
Phil.I.Am

Registriert seit: 13. Okt 2008
5 Beiträge
 
Turbo Delphi für Win32
 
#1

Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:25
Hiho... ich beschäftige mich im Moment damit einen kleines Mastermind spiel in Delphi zu schreiben. Ich bin noch nicht wirklich erfahren (2-3 kleine projekte), daher bitte die vielleicht etwas umständliche Programierung entschuldigen

mein problem ist folgendes: ich habe in meinem programm mehrer case-verzweigungen, um die farbeingabe des users mit der vom pc generierten farbabfolge zu vergleichen...

Delphi-Quellcode:
if (i = 0) then
 begin //15
  lblFarbe1_1.Caption := cmbFarbe1.Text;
  case cmbFarbe1.ItemIndex of
  geheim[1] : a := (a+1); //hier
  geheim[2] : b := (b+1); //hier
  geheim[3] : b := (b+1); //hier
  geheim[4] : b := (b+1) //hier
  else c := (c+1);
  end;
  lblFarbe1_2.Caption := cmbFarbe2.Text;
  case cmbFarbe2.ItemIndex of
  geheim[2] : a := (a+1); //hier
  geheim[1] : b := (b+1); //hier
  geheim[3] : b := (b+1); //hier
  geheim[4] : b := (b+1) //hier
  else c := (c+1);
  end;
  lblFarbe1_3.Caption := cmbFarbe3.Text;
  case cmbFarbe3.ItemIndex of
  geheim[3] : a := (a+1); //hier
  geheim[1] : b := (b+1); //hier
  geheim[2] : b := (b+1); //hier
  geheim[4] : b := (b+1) //hier
  else c := (c+1);
  end;
  lblFarbe1_4.Caption := cmbFarbe4.Text;
  case cmbFarbe4.ItemIndex of
  geheim[4] : a := (a+1); //hier
  geheim[1] : b := (b+1); //hier
  geheim[2] : b := (b+1); //hier
  geheim[3] : b := (b+1) //hier
  else c := (c+1);
  end;
  lblergebnis1.Caption := 'Runde 1: '+inttostr(a)+' komplett Richtige, '+inttostr(b)+' Richtige und '+inttostr(c)+' Falsche.';
  end;
dies ist ein teil des programms... das habe ich insgesamt 8 mal, für acht runden in denen man seine kombination noch verändern kann. die variablen a, b, c und i sind als ganz normale integer deklariert...

die fehlermeldung ist folgende: "E2026 Konstantenausdruck erwartet" (fehler werden immer bei "hier" angezeigt

habe mich schon durch mehrere foren gesucht und auch eine mögliche ursache gefunden... dort hatte der programierer in seinem code ein end falsch gesetzt oder vergessen (bin nicht ganz sicher )... habe jdeoch jetzt schon 3 mal alle begins und ends geprüft und finde keinen fehler...

hätte jemand von euch eine idee? falls jemand den gesamten source-code möchte (der zu lang für einen einzigen beitrag wäre =P) bitte melden

lg Phil.I.Am
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:29
Case-Labels müssen Konstanten sein. Array-Elemente sind nicht konstant.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Phil.I.Am

Registriert seit: 13. Okt 2008
5 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:33
dank dir

hätte ih auch drauf kommen können... aber naja, hättest du oder jemand anderes denn eine idee wie ich das ganze umschreiben könnte? einfach mit nder if/else schleife? (das hatte ich vorher, ist aber sehr unübersichtölih und bestimmt nicht gerade elgenat gelöst )

btw: das array "geheim" beinhaltet die vom pc generierte farbenfolge
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:38
"geheim" ist ein Array of TColor, oder wie soll ich das verstehen? Falls das so ist, wäre es sowieso Quatsch, die Elemente mit einem ItemIndex einer ComboBox zu vergleichen.

[edit] Die "If-Schleife" hab ich doch glatt überlesen [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:38
Tötet die If-Schleife!

Da musst du wohl mit if-else-if arbeiten. Besser wird es im Compilat eh nicht.
Du könntest aber mit einer geschickten nested function noch etwas reißen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Phil.I.Am

Registriert seit: 13. Okt 2008
5 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:43
geheim ist einfach nur ein array of integer wobei 0 für gelb, 1 für orange, 2 für rot usw steht... (sprich: ist geheim[1] = 2, ist die farbe auf platz 1 orange...).

könntest du das mit dieser nested function mal etwas genauer erklären (
was ist das?, wie funktioniert das? =P)

sonst halt wieder if/else...-.-

auf jeden fall schon einaml danke für die schnellen antworten =)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:45
Eine nested function ist eine "Unterprozedur".
Delphi-Quellcode:
procedure Haupt;

  procedure Hallo; //nested function
  begin
    ShowMessage('Hallo');
  end;

begin
  Hallo;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Phil.I.Am

Registriert seit: 13. Okt 2008
5 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 13. Okt 2008, 14:48
ok werd mal ein bissl dazu googlen, aber erstmal wieder auf die (bescheidene) if/else-variante zurückgreifen...

dank euch =)
  Mit Zitat antworten Zitat
Fuchspower

Registriert seit: 17. Okt 2008
8 Beiträge
 
#9

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 17. Okt 2008, 18:21
Mein Problem ist wie folgt:

Delphi-Quellcode:
procedure TForm1.BEinsClick(Sender: TObject);
begin
with imbild.Canvas do
 begin
  case pixels[45,105] of
clred: begin brush.color:=clred;
 floodfill (15, 15, clblack, fsborder); end;
clyellow: begin brush.color:=clyellow;
 floodfill (15, 15, clblack, fsborder); end;
clgreen: begin brush.color:=clgreen;
 floodfill (15, 15, clblack, fsborder); end;
clwhite: begin brush.color:=clwhite;
 floodfill (15, 15, clblack, fsborder); end;
clblue: begin brush.color:=clblue;
 floodfill (15, 15, clblack, fsborder); end;
clfuchsia: begin brush.color:=clfuchsia;
 floodfill (15, 15, clblack, fsborder); end;

  case pixels[85,105] of
clred: begin brush.color:=clred;
 floodfill (15, 35, clblack, fsborder); end;
clyellow: begin brush.color:=clyellow;
 floodfill (15, 35, clblack, fsborder); end;
clgreen: begin brush.color:=clgreen;
 floodfill (15, 35, clblack, fsborder); end;
clwhite: begin brush.color:=clwhite;
 floodfill (15, 35, clblack, fsborder); end;
clblue: begin brush.color:=clblue;
 floodfill (35, 15, clblack, fsborder); end;
clfuchsia: begin brush.color:=clfuchsia;
 floodfill (35, 15, clblack, fsborder); end;

 end;
end;
nun verlangt er beim vorletzten end einen Konstantenausdruck. Ich habe relativ wenige Erfahrungen mit Delphi und dies ist nur ein Auszug der gesamten Procedure, der Rest ist aber genauso aufgebaut.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: Konstantenausdruck in case-Verzweigung erwartet

  Alt 17. Okt 2008, 18:29
Rück den Code doch mal schön ein. Also z.B. so:

Delphi-Quellcode:
with imbild.Canvas do
begin
  case pixels[45,105] of
    clred:
    begin
      brush.color:=clred;
      floodfill (15, 15, clblack, fsborder);
    end;
    clwhite:
    begin
      brush.color:=clwhite;
      floodfill (15, 15, clblack, fsborder);
    end;
  end;
end;
Das hilft bei derartigen begin-end Fehlern ungemein

(imho fehlt bei dir ein end oder so bzw. ein ist an der falschen Stelle)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz