Entwickler-Ecke

Sonstiges (Delphi) - Fehler im Quelltext nicht auffindbar,WürfelspielMit 2 Würfel


Anfänger007 - Di 22.06.10 20:56
Titel: Fehler im Quelltext nicht auffindbar,WürfelspielMit 2 Würfel
Ich habe die Aufgabe in der 11. Klasse, ein Projekt zu entwerfen, bei dem 2 Würfel geworfen werden.
Der Einsatz und das Kapital sollen dabei ebenfalls beachtet werden.
Das restliche Kapital ebenfalls, wie ich das darstelle ist mir leider auch nicht bewusst.
Nun kann ich meine Fehler nicht finden, ständig werden mir Fehlermeldungen angezeigt, die ich nicht nachvollziehen kann..
ich bitte um dringende Hilfe!
Danke schon mal im vorraus.


Moderiert von user profile iconGausi: Topic aus Job Börse verschoben am Di 22.06.2010 um 21:07


Gausi - Di 22.06.10 21:08

Hallo und :welcome: in der Entwickler-Ecke,

nur mit der .dpr-Datei kann man da relativ wenig sagen. Die .pas und .dfm wären auch noch nötig. ;-)


Anfänger007 - Di 22.06.10 21:10

das heißt jetzt für mich, dass ich unit und project hochladen muss?

vom programmieren habe ich leider sehr wenig ahnung, habe mich mit einer 3 durch das jahr gekämpft :D


Delete - Di 22.06.10 21:10

Warum nennst du uns nicht einfach die Fehlermeldungen und postest die zugehörigen Codestellen?


Anfänger007 - Di 22.06.10 21:12

ist es in ordnung, wenn ich den ganzen quelltext einfüge, oder nur die passenden stellen?

denn ohne einen überblick könnte ich mir darüber auch nichts vorstellen :)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---


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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
procedure TForm1.Button1Click(Sender: TObject);
var einsatz, faktor, wurf1, wurf2, augensumme, kapital: integer;

begin randomize;
edit1.text:='(Einsatz)';
wurf1:=random(6)+1;
wurf2:=random(6)+1;
augensumme:=wurf1+wurf2;
end;

<span style="color: red">erste fehlermeldung:</span>
<span style="color: red">if</span> augensumme = 2,3,4,5,6 then begin edit1.text:='Einsatz verloren';
faktor:=0end;


if augensumme = 7,8,9 then begin edit1.text:='Einsatz zurück';
faktor:=1end;


if augensumme = 10 then begin
edit1.text:='Einsatz verdoppelt';
faktor:=2end;


if augensumme = 11 then begin
edit1.text:='Einsatz verdreifacht';
faktor:=3end;


if augensumme = 12 then begin
 edit1.text:='Einsatz vervierfacht';
faktor:=4;
end;


if wurf1 = 1 then begin edit1.text:='Eins' ; image1.show; image2.hide; end;
if wurf1 = 2 then begin edit1.text:='Zwei' ; image2.show; image8.hide; end;
if wurf1 = 3 then begin edit1.Text:='Drei' ; image3.show; image9.Hide; end;
if wurf1 = 4 then begin edit1.Text:='Vier' ; image4.Show; image10.Hide; end;
if wurf1 = 5 then begin edit1.Text:='Fünf' ; image5.Show; image11.Hide; end;
edit1.text:=inttostr(faktor*einsatz);
if kapital = 0 then button2.show;


procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var kapital: integer;
begin
if kapital=0 then button2.show;
end;

end.


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Georg08 - Di 22.06.10 21:33

Kannst du das ganze mal bitte in schöne Delphi-Tags setzen und mir sagen warum da ein If herumschwebt :D
+
Die Fehlermeldung :D

Edit:
Delphi-Tags heißt, dass du vor deinen Code und hinter deinen Code <span class="inlineSyntax"><span class="codecomment">{PROTECTTAGd62d1cc776214060fa2b9d70a8fb830a}</span></span> setzt...


Anfänger007 - Di 22.06.10 21:47

wenn die gewürfelte Augenzahl gleich 2..6 ist, dann soll in dem editfeld der text "einsatz verloren" erscheinen.

Fehlermeldung in Delphi: Unit1.pas (62): Deklaration erwartet, aber 'IF' gefunden.


Delete - Di 22.06.10 21:48

1. Wo sind jetzt Fehlermeldungen?
2. Guck dir in einem Grundlagentutorial oder in einem Buch mal an, wie man mehrere Bedingungen miteinander verknüpft.


ALF - Di 22.06.10 21:49

Hi, in welcher Procedure stehen deine ganzen if Anweisungen?
ich meine die zwischen:

Delphi-Quelltext
1:
2:
3:
procedure TForm1.Button1Click(Sender: TObject);
....
end;
und

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if augensumme = 2,3,4,5,6 then
begin
   edit1.text:='Einsatz verloren'
   faktor:=0;
end


if augensumme = 7,8,9 then
begin
   edit1.text:='Einsatz zurück'
   faktor:=1;
end;

usw.

Delphi-Quelltext
1:
2:
3:
procedure TForm1.Button3Click(Sender: TObject); 
.....
end;


Gruss Alf


ZeitGeist87 - Di 22.06.10 21:51

Schau dir einfach Suche in der Entwickler-Ecke CASE an ;-)


Anfänger007 - Di 22.06.10 21:57

Der eintrag mit den Grundlagen zur Gewinnbestimmung ist alles in der procedure des button1.


ALF - Di 22.06.10 22:00

user profile iconAnfänger007 hat folgendes geschrieben Zum zitierten Posting springen:
Der eintrag mit den Grundlagen zur Gewinnbestimmung ist alles in der procedure des button1.

Schau mal richtig hin :wink: daher auch die Fehlermeldung in Delphi: Unit1.pas (62): Deklaration erwartet, aber 'IF' gefunden

Gruss Alf


Delete - Di 22.06.10 22:01

user profile iconAnfänger007 hat folgendes geschrieben Zum zitierten Posting springen:
Der eintrag mit den Grundlagen zur Gewinnbestimmung ist alles in der procedure des button1.

Nö:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var 
  einsatz, faktor, wurf1, wurf2, augensumme, kapital: integer;
begin randomize;
  edit1.text:='(Einsatz)';
  wurf1:=random(6)+1;
  wurf2:=random(6)+1;
  augensumme:=wurf1+wurf2;
end

if augensumme = 2,3,4,5,6 then
begin
  edit1.text:='Einsatz verloren';
  faktor:=0;
end;


Formatiere deinen Quelltext mal sauber, dann siehst du auch, was wozu gehört.


Anfänger007 - Di 22.06.10 22:03

tut mir leid, nun blicke ich gar nicht mehr durch .. :(


ALF - Di 22.06.10 22:08

ok,

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject);
var
   einsatz, faktor, wurf1, wurf2, augensumme, kapital: integer;
begin
 randomize;
  edit1.text:='(Einsatz)';
  wurf1:=random(6)+1;
  wurf2:=random(6)+1;
  augensumme:=wurf1+wurf2;
end //dieses end müsste am schluss nach der letzten if abfrage hin

if augensumme = 2,3,4,5,6 then
begin
  edit1.text:='Einsatz verloren';
  faktor:=0;
end;
....
....
....
if kapital = 0 then button2.show; 
//evtl hier? end;


Gruss Alf


Delete - Di 22.06.10 22:11

Zum einem müssen deine if-Abfragen mit in die ButtonClick Prozedur, so wie du sie hast, hängen sie lose irgendwo in der Unit rum, was natürlich nicht sein darf. Anweisungen können nur in einer Prozedur oder Funktion liegen. aber das sollte man spätestens in der zweiten Stunde gelernt haben.

Zum anderem guck dir mal an, wie man mehrere Bedingungen miteinander verknüpft bzw. guck dir mal das Schlüsselwort case an.


Anfänger007 - Di 22.06.10 22:12

alles klar, dankeschön!

ERSTER fehler beseitigt :s

weitere Fehlermeldung:
if augensumme = 2..6 then begin edit1.text:='Einsatz verloren';
[Fehler] Unit1.pas(62): 'THEN' erwartet, aber '..' gefunden


FinnO - Di 22.06.10 22:15

versuche mal:

Delphi-Quelltext
1:
if augensumme in [2..6then ...                    


ALF - Di 22.06.10 22:16

Wollte ich vorhin noch dazu schreiben das es gleich zum nächsten fehler kommt :wink:

Delphi-Quelltext
1:
2:
3:
4:
5:
if augensumme = 2..6 then
begin
 edit1.text:='Einsatz verloren';
...
end;
muss so sein:

Delphi-Quelltext
1:
if (augensumme = 2or (augensumme = 3then //usw........                    

und alle sagen Dir, schau dir mal case an, ist besser als if für diese Zwecke!!!!
Gruss Alf


Anfänger007 - Di 22.06.10 22:19

woooooow, ein fehler bleibt noch übrig :)

procedure TForm1.Button3Click(Sender: TObject);
[Fehler] Unit1.pas(95): Anweisung erwartet, aber 'PROCEDURE' gefunden.


ALF - Di 22.06.10 22:37

Würde sagen, nun hast Du irgendwo ein if oder x:= evtl. zu wenig? zB a:= (b*c), und Du hast (b*c) stehen???

Gruss Alf


ZeitGeist87 - Di 22.06.10 23:39

Oder ein end;


JoelH - Mi 23.06.10 10:13

deinem Codefragment entnehme ich, dass da ein end; fehlt


ZeitGeist87 - Mi 23.06.10 11:01

user profile iconJoelH hat folgendes geschrieben Zum zitierten Posting springen:
deinem Codefragment entnehme ich, dass da ein end; fehlt


Bzw. dass das erste end; fehl am Platz ist.


Georg08 - Mi 23.06.10 14:50

end; vergessen?

Edit:
Sorry, hab die Seite nicht neu geladen, antwort kam ja schon :oops: