Autor Beitrag
mi-frank
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Di 28.02.06 23:56 
Hi,

habe folgenden Quellcode

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var 
 DS:Integer;

procedure Test(Mode:integer);
begin
  case Mode of
     1:
       DS:=1;
     2:
       DS:=DS-1;
     3:
       DS:=Ds+1;
     4:
       DS:=frmAzubiBeurteilungsbogen.TableBogen.recordcount;
  end;
end;


bekomme die Fehlermeldung "Konstantenausdruck erforderlich" und weiß einfach nicht, was ich falsch gemacht habe?

Ich hoffe, einer von euch kann mir weiterhelfen!

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 01.03.06 00:19 
Moin!

user profile iconmi-frank hat folgendes geschrieben:
bekomme die Fehlermeldung "Konstantenausdruck erforderlich" und weiß einfach nicht, was ich falsch gemacht habe?

Wenn du jetzt noch dazu gesagt hättest, bei welcher Zeile der Fehler auftritt, könnten wir dir vielleicht sogar wirklich helfen; aber gut, dass du uns das raten läßt, sonst haben wir ja gar keinen Spaß dabei... :wink:

cu
Narses

PS: Wenn du die Delphi-Tags für deinen Code verwendest, wird dieser auch besser dargestellt und läßt sich leichter lesen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.03.06 00:28 
Mode darf keine Variable sein, da der Compiler die Sprungadressen der Case-Anweisung beim Kompilieren errechnet. Entweder überlegst du dir was anderes oder zu löst das mit if und else.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 01.03.06 00:42 
Moin!

user profile iconLuckie hat folgendes geschrieben:
Mode darf keine Variable sein, da der Compiler die Sprungadressen der Case-Anweisung beim Kompilieren errechnet. Entweder überlegst du dir was anderes oder zu löst das mit if und else.

Ähm, also das glaube ich nicht; ich habe das mal gerade getestet, klar darf der case-Ausdruck eine Variable sein. Das ist IMHO was anderes, was bei ihm den Fehler wirft. :wink:

cu
Narses
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.03.06 00:51 
Hm, stimmt das geht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function foobar(Mode: Integer): String;
begin
  case Mode of
  0: ;
  1: ;
  2: ;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  foobar(2);
end;

Dann habe ich das jetzt mit irgendetwas anderem Verwechselt. :gruebel:

Ich glaube, ich habe das mit den Sprungzielen verwechselt, das dürfen keine Variablen sein. ;)
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 01.03.06 02:07 
Genau, Luckie. Das hat mich auch schon geärgert ^^
Ich wollte die Wahrscheinlichkeit eines Zufallsevents variabel machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
case random(1000of
 1..50:tudies;
 51..52+wasweisich:tudas;
end;

Aber das klappt nicht. Hier wird genau die Fehlermeldung gebracht, die mi-frank erhalten hat.
Blöderweise sollten wir tatsächlich wissen, in welcher Zeile das kommt. ausserdem solltest du [*delphi] [/delphi] tags verwenden, um den Code den du postest etwas schöner aussehen zu lassen :/ (ohne den * natürlich)

edit: [ot] sicher dass das nicht "fubar" für "fu**ed up beyond all recognition" heist?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 01.03.06 02:34 
Ich hab zwei Ideen, woran es liegen könnte:

1. Mode ist vom Compiler in irgendeine Weise vorbelegt was zu Problemen in der Handhabung führt (denk ich mal weniger)

2. Durch die Zuweisungsoperationen wird der Compiler durch die Zuweisungen irritiert. Versuch mal, ob es so hier besser funzt:

ausblenden 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:
var 
    DS: Integer;

procedure Test(Mode: integer);
begin
    case Mode of
        1:
            Begin
                DS:=1;
            end;
        2:
            Begin
                Dec(DS);
            end;
        3:
            Begin
                Inc(DS);
            end;
        4:
            Begin
                DS := frmAzubiBeurteilungsbogen.TableBogen.recordcount;
            end;
    end;
end;


Ansonsten bitte wirklich noch einmal die genaue Fehlerzeile mitteilen.

Weiterhin (heut erst wieder gehabt*) ein wenig größeren Source-Abshnitt senden. Rein syntaktisch sehe ich hier keinen Fehler.

* Beim Source eines Kumpels gab's den Fehler "String nicht kompatibel mit Procedure, Untyped Pointer, ..." (markiert wurde das End einer Schleife) ... Ursache war ein +-Zeichen anstatt eines ; zehn Zeilen oberhalb ... Guck also auch mal speziell nach solchen Fehlern.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
mi-frank Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 01.03.06 12:03 
Hi,

die letzte Antwort war die richtige!

Hab mal wieder nicht an das Begin ... end; gedacht!

Nächstes mal werde ich probieren mich klarer auszudrücken, wo ich ein Problem habe!!