Entwickler-Ecke

Sonstiges (Delphi) - Fehler im Programmtext?? Wer kann helfen?


Matclou - Mo 05.01.09 15:45
Titel: Fehler im Programmtext?? Wer kann helfen?

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:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
unit mCatchtheprisoners;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, DdeMan;

type
  TFormular = class(TForm)
    ImGitter1: TImage;
    ImGitter2: TImage;
    LbTitel: TLabel;
    BtStart: TButton;
    BtStop: TButton;
    BtLeicht: TButton;
    BtMittel: TButton;
    BtSchwer: TButton;
    LbSchwierigkeitsgrad: TLabel;
    TiGitter2OffaL: TTimer;
    TiGitter2OffbL: TTimer;
    ImFigur1R: TImage;
    ImFigur2R: TImage;
    ImFigur3L: TImage;
    ImFigur4L: TImage;
    ImFigur5L: TImage;
    ImFigur6R: TImage;
    ImFigur7R: TImage;
    TiRechtsF1: TTimer;
    TiAuswahlRF1: TTimer;
    TiAuswahlRF2: TTimer;
    TiAuswahlRF3: TTimer;
    TiAuswahlRF4: TTimer;
    TiAuswahlRF5: TTimer;
    TiAuswahlRF6: TTimer;
    TiAuswahlRF7: TTimer;
    TiRechtsF2: TTimer;
    TiRechtsF3: TTimer;
    TiLinksF4: TTimer;
    TiAuswahlUF7: TTimer;
    TiUntenF1: TTimer;
    TiObenF2: TTimer;
    TiLinksF1: TTimer;
    TiRechtsF7: TTimer;
    TiRechtsF6: TTimer;
    TiRechtsF5: TTimer;
    TiRechtsF4: TTimer;
    TiAuswahlLF1: TTimer;
    TiAuswahlLF2: TTimer;
    TiAuswahlLF3: TTimer;
    TiAuswahlLF4: TTimer;
    TiAuswahlLF5: TTimer;
    TiAuswahlLF6: TTimer;
    TiAuswahlLF7: TTimer;
    TiLinksF2: TTimer;
    TiLinksF3: TTimer;
    TiLinksF5: TTimer;
    TiLinksF6: TTimer;
    TiLinksF7: TTimer;
    TiObenF1: TTimer;
    TiAuswahlUF1: TTimer;
    TiAuswahlUF2: TTimer;
    TiAuswahlUF3: TTimer;
    TiAuswahlUF4: TTimer;
    TiAuswahlUF5: TTimer;
    TiAuswahlUF6: TTimer;
    TiUntenF7: TTimer;
    TiAuswahlOF1: TTimer;
    TiAuswahlOF2: TTimer;
    TiAuswahlOF3: TTimer;
    TiAuswahlOF4: TTimer;
    TiUntenF6: TTimer;
    TiUntenF5: TTimer;
    TiUntenF4: TTimer;
    TiUntenF3: TTimer;
    TiUntenF2: TTimer;
    TiObenF7: TTimer;
    TiObenF6: TTimer;
    TiObenF5: TTimer;
    TiObenF4: TTimer;
    TiObenF3: TTimer;
    TiAuswahlOF5: TTimer;
    TiAuswahlOF6: TTimer;
    TiAuswahlOF7: TTimer;
    ImFigur1L: TImage;
    ImFigur1O: TImage;
    ImFigur1U: TImage;
    TiRandom: TTimer;
    procedure BtStartClick(Sender: TObject);
    procedure BtLeichtClick(Sender: TObject);
    procedure TiGitter2OffaLTimer(Sender: TObject);
    procedure TiGitter2OffbLTimer(Sender: TObject);
    procedure BtMittelClick(Sender: TObject);
    procedure BtSchwerClick(Sender: TObject);
    procedure BtStopClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TiRechtsF1Timer(Sender: TObject);
    procedure TiRandomTimer(Sender: TObject);
    procedure TiAuswahlRF1Timer(Sender: TObject);
    procedure TiLinksF1Timer(Sender: TObject);
  private
  r:Integer;
  public
    { Public-Deklarationen }
  end;

var
  Formular: TFormular;

implementation

{$R *.dfm}

procedure TFormular.BtStartClick(Sender: TObject);
begin
BtStart.Visible:=false;
BtStop.Visible:=false;
BtLeicht.Visible:=true;
BtMittel.Visible:=true;
BtSchwer.Visible:=true;
LbSchwierigkeitsgrad.Visible:=true;
end;



procedure TFormular.BtLeichtClick(Sender: TObject);
begin
BtLeicht.Visible:=false;
BtMittel.Visible:=false;
BtSchwer.Visible:=false;
LbTitel.Visible:=false;
LbSchwierigkeitsgrad.Visible:=false;
TiGitter2OffaL.Enabled:=true;
end;

procedure TFormular.TiGitter2OffaLTimer(Sender: TObject);
begin
ImGitter2.Left:=ImGitter2.Left+2;
If ImGitter2.Left>=1017
   then begin TiGitter2OffaL.Enabled:=false;
   TiGitter2OffbL.Enabled:=true;
   end;

end;

procedure TFormular.TiGitter2OffbLTimer(Sender: TObject);
begin
ImGitter2.Visible:=false;
TiGitter2OffbL.Enabled:=false;
TiRechtsF1.Enabled:=true;
TiRandom.Enabled:=true;
end;

procedure TFormular.BtMittelClick(Sender: TObject);
begin
BtLeicht.Visible:=false;
BtMittel.Visible:=false;
BtSchwer.Visible:=false;
LbTitel.Visible:=false;
LbSchwierigkeitsgrad.Visible:=false;
TiGitter2OffaL.Enabled:=true;
end;

procedure TFormular.BtSchwerClick(Sender: TObject);
begin
BtLeicht.Visible:=false;
BtMittel.Visible:=false;
BtSchwer.Visible:=false;
LbTitel.Visible:=false;
LbSchwierigkeitsgrad.Visible:=false;
TiGitter2OffaL.Enabled:=true;
end;

procedure TFormular.BtStopClick(Sender: TObject);
begin
Formular.Close;
end;

procedure TFormular.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TFormular.TiLinksF1Timer(Sender: TObject);
begin
   ImFigur1L.visible:=true;
if r=0
then begin
      TiAuswahlLF1.enabled:=true;
      TiLinksF1.enabled:=false;
      ImFigur1L.visible:=false;
      ImFigur1R.left:=ImFigur1R.Left;
      ImFigur1O.left:=ImFigur1R.Left;
      ImFigur1U.left:=ImFigur1R.Left;
      ImFigur1R.top:=ImFigur1R.top;
      ImFigur1O.top:=ImFigur1R.top;
      ImFigur1U.top:=ImFigur1R.top;

           end
else begin
      ImFigur1L.Left:=ImFigur1L.Left-2;
      r:=r-1
     end;
if ImFigur1L.Left<=0
then begin
      TiAuswahlLF1.enabled:=true;
      TiLinksF1.enabled:=false;
      ImFigur1L.visible:=false;
      ImFigur1R.left:=ImFigur1R.Left;
      ImFigur1O.left:=ImFigur1R.Left;
      ImFigur1U.left:=ImFigur1R.Left;
      ImFigur1R.top:=ImFigur1R.top;
      ImFigur1O.top:=ImFigur1R.top;
      ImFigur1U.top:=ImFigur1R.top;

     end;


end;

procedure TFormular.TiRechtsF1Timer(Sender: TObject);
begin
   ImFigur1R.visible:=true;
if r=0
then begin
      TiAuswahlRF1.enabled:=true;
      TiRechtsF1.enabled:=false;
      ImFigur1R.visible:=false;
      ImFigur1L.left:=ImFigur1R.Left;
      ImFigur1O.left:=ImFigur1R.Left;
      ImFigur1U.left:=ImFigur1R.Left;
      ImFigur1L.top:=ImFigur1R.top;
      ImFigur1O.top:=ImFigur1R.top;
      ImFigur1U.top:=ImFigur1R.top;

           end
else begin
      ImFigur1R.Left:=ImFigur1R.Left+2;
      r:=r-1
     end;
if ImFigur1R.Left>=900
then begin
      TiAuswahlRF1.enabled:=true;
      TiRechtsF1.enabled:=false;
      ImFigur1R.visible:=false;
      ImFigur1L.left:=ImFigur1R.Left;
      ImFigur1O.left:=ImFigur1R.Left;
      ImFigur1U.left:=ImFigur1R.Left;
      ImFigur1L.top:=ImFigur1R.top;
      ImFigur1O.top:=ImFigur1R.top;
      ImFigur1U.top:=ImFigur1R.top;

     end;


end;


procedure TFormular.TiRandomTimer(Sender: TObject);
begin
r:=random(100)+20;
TiRandom.Enabled:=false
end;

procedure TFormular.TiAuswahlRF1Timer(Sender: TObject);
var ri:Integer;
begin
   ri:=random(3)+1;
   case ri of 1begin
                    TiLinksF1.enabled:=true;
                    TiRandom.enabled:=true;
                    TiAuswahlRF1.enabled:=false;
                 end;
   case ri of 2begin
                    TiObenF1.enabled:=true;
                    TiRandom.enabled:=true;
                    TiAuswahlRF1.enabled:=false;
                 end;
   case ri of 3begin
                    TiUntenF1.enabled:=true;
                    TiRandom.enabled:=true;
                    TiAuswahlRF1.enabled:=false;
                 end;
end;
end.


Folgende Fehlermeldungen kommen:

Quelltext
1:
2:
3:
4:
[Fehler] mCatchtheprisoners.pas(284): Konstantenausdruck erwartet
[Fehler] mCatchtheprisoners.pas(285): Record, Objekt oder Klassentyp erforderlich
[Fehler] mCatchtheprisoners.pas(300): ',' oder ':' erwartet, aber Dateiende gefunden
[Fataler Fehler] pCatchtheprisoners.dpr(5): Verwendete Unit 'mCatchtheprisoners.pas' kann nicht compiliert werden

Die ersten drei Fehler drehen sich alle um die letzten zwei Ends, der letzte scheint ein allgemeiner Fehler zu sein.

Ich bin noch unerfahren mit Delphi, kann mir jmd. helfen?

Für weitere Fragen stehe ich immer offen natürlich...

Danke schon mal im Voraus... ;)

Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt


Matclou - Mo 05.01.09 15:57

Ach ja zu dem:

Zitat:
[Fehler] mCatchtheprisoners.pas(285): Record, Objekt oder Klassentyp erforderlich


noch was:

Zitat:
Für diesen Fehler gibt es zwei mögliche Ursachen: zum einen die Anwendung von "." auf ein Objekt, das kein Datensatz ist, und zum anderen die Verwendung einer Variable in einer WITH-Anweisung, die nicht den korrekten Typ aufweist.


Zum fettmakierten:

Da genau die Zeile makiert ist, in der ich einen Punkt hinter das End gesetzt habe, denke ich mir das ist die Ursache.

Wodurch aber zeichnet sich ein Datensatz aus, das heißt was muss ich da noch ändern?


jaenicke - Mo 05.01.09 16:13

Hallo und :welcome: im Forum!

Du solltest Delphi-Tags verwenden statt den Quelltext zu zitieren. Dann sieht man auch welche Zeile die angegebene Zeile ist...

Dann zu deinem case ganz unten: Du solltest dir einmal anschauen wie case richtig aussieht...
Zum Beispiel hier:
http://crashkurs.christian-stelzmann.de

Da fehlt nämlich je ein end zu jedem case, aber anders als in anderen Sprachen schreibt man in Delphi nur einmal das "case ... of". ;-)
Deshalb der Fehler.


Delete - Mo 05.01.09 16:16

55 Timer! Du solltest dein Konzept noch mal überdenken.


Matclou - Mo 05.01.09 16:16

Ah vielen Dank, ich bin aber auch blöd - das zweite und das dritte case waren ja völlig unnötig^^


jaenicke - Mo 05.01.09 17:46

Trotzdem gilt natürlich auch das was user profile iconLuckie geschrieben hat:
Derart viele Timer sind keine gute Idee. Das macht das nur unnötig kompliziert. Sinnvoller wäre eine ordentliche Logik mit sehr wenigen Timern.

Eigentlich reicht auch einer, wenn man alles sich überlegt und entsprechend programmiert. Aber der Einfachheit halber mag es schon mal sinnvoll sein ein oder zwei mehr zu benutzen. Aber 55?!?