Entwickler-Ecke

Sonstiges (Delphi) - Glücksrad programmieren


Fatman - Do 18.02.10 10:15

BeitragVerfasst am: Heute um 10:12 Antworten mit Zitat Beitrag editieren Beitrag melden
Hey Leute passt hier net rein aber ich hab n Problem mit meinem Programm. Will Glücksrad programmieren mit folgendem Quelltext:

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:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
procedure TForm1.PruefenClick(Sender: TObject);
var
za1, za2, za3, za4, za5, za6, zb1, zb2, zb3, zb4, zb5, zb6, zc1, zc2, zc3,
zc4, zc5, zc6, zhidden, rs: integer;

procedure vari(vara: integer);
var
za1, za2, za3, za4, za5, za6, zb1, zb2, zb3, zb4, zb5, zb6, zc1, zc2, zc3,
zc4, zc5, zc6: integer;
begin
if za1 = vara then
begin
a1.text := feld.text;
end;
if za2 = vara then
begin
a2.text := feld.text;
end;
if za3 = vara then
begin
a3.text := feld.text;
end;
if za4 = vara then
begin
a4.text := feld.text;
end;
if za5 = vara then
begin
a5.text := feld.text;
end;
if za6 = vara then
begin
a6.text := feld.text;
end;

if zb1 = vara then
begin
b1.text := feld.text;
end;
if zb2 = vara then
begin
b2.text := feld.text;
end;
if zb3 = vara then
begin
b3.text := feld.text;
end;
if zb4 = vara then
begin
b4.text := feld.text;
end;
if zb5 = vara then
begin
b5.text := feld.text;
end;
if zb6 = vara then
begin
b6.text := feld.text;
end;

if zc1 = vara then
begin
c1.text := feld.text;
end;
if zc2 = vara then
begin
c2.text := feld.text;
end;
if zc3 = vara then
begin
c3.text := feld.text;
end;
if zc4 = vara then
begin
c4.text := feld.text;
end;
if zc5 = vara then
begin
c5.text := feld.text;
end;
if zc6 = vara then
begin
c6.text := feld.text;
end;
end;

begin
zhidden := strtoint(hidden.text);

if zhidden = 0 then
begin
randomize;
rs := (random(9) + 1);
zhidden := rs;
hidden.text := inttostr(zhidden);
if (rs = 1then
begin
za1 := 9;
za2 := 3;
za3 := 8;

zb1 := 13;
zb2 := 1;
zb3 := 7;

zc1 := 5;
zc2 := 9;
zc3 := 19;

end;
if (rs = 2then
begin
za1 := 9;
za2 := 14;
za3 := 6;
za4 := 15;

zb1 := 9;
zb2 := 19;
zb3 := 20;

zc1 := 3;
zc2 := 15;
zc3 := 15;
zc4 := 12;

end;
if (rs = 3then
begin
za1 := 13;
za2 := 1;
za3 := 24;

zb1 := 11;
zb2 := 12;
zb3 := 5;
zb4 := 2;
zb5 := 20;

zc1 := 16;
zc2 := 1;
zc3 := 16;
zc4 := 9;
zc5 := 5;
zc6 := 18;
end;
if (rs = 4then
begin
za1 := 14;
za2 := 5;
za3 := 18;
za4 := 4;
za5 := 19;

zb1 := 12;
zb2 := 5;
zb3 := 18;
zb4 := 14;
zb5 := 5;
zb6 := 14;
zc1 := 1;
zc2 := 12;
zc3 := 12;
zc4 := 5;
zc5 := 9;
zc6 := 14;
end;
if (rs = 5then
begin
za1 := 2;
za2 := 15;
za3 := 8;
za4 := 14;
za5 := 5;
za6 := 14;
zb1 := 12;
zb2 := 1;
zb3 := 19;
zb4 := 19;
zb5 := 5;
zb6 := 14;
zc1 := 6;
zc2 := 21;
zc3 := 18;
zc4 := 26;
zc5 := 5;
zc6 := 14;
end;
if (rs = 6then
begin
za1 := 20;
za2 := 15;
za3 := 25;
za4 := 15;
za5 := 20;
za6 := 1;
zb1 := 26;
zb2 := 15;
zb3 := 15;
zb4 := 13;

zc1 := 26;
zc2 := 15;
zc3 := 15;
zc4 := 13;

end;
if (rs = 7then
begin
za1 := 9;
za2 := 3;
za3 := 8;

zb1 := 19;
zb2 := 9;
zb3 := 14;
zb4 := 7;
zb5 := 5;

zc1 := 20;
zc2 := 18;
zc3 := 1;
zc4 := 14;
zc5 := 3;
zc6 := 5;
end;
if (rs = 8then
begin
za1 := 2;
za2 := 1;
za3 := 14;
za4 := 1;
za5 := 14;
za6 := 1;
zb1 := 9;
zb2 := 19;
zb3 := 20;

zc1 := 6;
zc2 := 1;
zc3 := 12;
zc4 := 19;
zc5 := 3;
zc6 := 8;
end;
if (rs = 9then
begin
za1 := 10;
za2 := 1;
za3 := 8;
za4 := 18;
za5 := 5;

zb1 := 12;
zb2 := 1;
zb3 := 14;
zb4 := 7;

zc1 := 19;
zc2 := 3;
zc3 := 8;
zc4 := 21;
zc5 := 12;
zc6 := 5;
end;
if (rs = 10then
begin
za1 := 8;
za2 := 5;
za3 := 24;
za4 := 5;
za5 := 14;

zb1 := 5;
zb2 := 19;
zb3 := 19;
zb4 := 5;
zb5 := 14;

zc1 := 2;
zc2 := 15;
zc3 := 5;
zc4 := 7;
zc5 := 5;
zc6 := 12;
end;
end;

if feld.text = 'i' then
begin
testen.text := '9';
vari(9);
end;

if feld.text = 'e' then
begin
testen.text := '5';
vari(5);
end;

end;

end.


Die Zahlen stehen für die jeweiligen Buchstaben.
Die eingegebenen Buchstaben werden allerdings nur im ersten Feld angezeigt und zwar immer ein anderer :/
wäre nett wenn uns jmd hgelfen könnte oder uns sagt wie man das anders schreiben kann.
danke im voraus
euer ,
Fatman!

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


SvenAbeln - Do 18.02.10 11:45

Du vergleichst hier mit Variablen, denen du noch keinen Wert zugewiesen hast.

In der Prozedure ist die markierte Variable za1 undefiniert, aber mit dieser wird verglichen.
Ich denke du willst mit der za1 darüber vergleichen, dann darfst du die selben variablen aber in der Prozedur nicht noch einmal lokal definieren.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.PruefenClick(Sender: TObject);
var
za1, za2, za3, za4, za5, za6, zb1, zb2, zb3, zb4, zb5, zb6, zc1, zc2, zc3,
zc4, zc5, zc6, zhidden, rs: integer;

  procedure vari(vara: integer);
  var
    za1, za2, za3, za4, za5, za6, zb1, zb2, zb3, zb4, zb5, zb6, zc1, zc2, zc3,
    zc4, zc5, zc6: integer;
  begin
    if za1 = vara then
    begin
      a1.text := feld.text;
    end;
    if za2 = vara then
    begin


Fatman - Do 18.02.10 13:36

Ok problem erkannt aber wie löse ich das ganze dass das programm läuft?^^


Jakob_Ullmann - Do 18.02.10 14:27

Ich bin mir nicht sicher, ob ich der einzige bin, der deinen Quellcode nicht versteht... Wozu brauchst du die ganzen Variablen und wozu sind die gut (also was bedeuten sie)?


JoelH - Do 18.02.10 15:09

user profile iconFatman hat folgendes geschrieben Zum zitierten Posting springen:
Ok problem erkannt aber wie löse ich das ganze dass das programm läuft?^^


Befasse dich einfach mal mit Arrays, besonders den dynamischen.
Oder übergib der Procedure vari eben alle variablen.


Delphi-Quelltext
1:
2:
procedure vari(vara, za1, za2, za3, za4, za5, za6, zb1, zb2, zb3, zb4, zb5, zb6, zc1, zc2, zc3,
zc4, zc5, zc6: integer);


Jakob_Ullmann - Do 18.02.10 15:18

Dann lieber einen record oder einen Pointer auf die erste Variable, der dann nur erhöht wird (oder eben das Array).


F34r0fTh3D4rk - Do 18.02.10 15:19

Suche bei Google CODE-FORMATIERUNG wäre schon mal ein guter Anfang :lol: Außerdem solltest du dir vielleicht mal Suche in: Delphi-Forum, Delphi-Library ARRAYS angucken.


Fatman - Do 18.02.10 17:35

user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin mir nicht sicher, ob ich der einzige bin, der deinen Quellcode nicht versteht... Wozu brauchst du die ganzen Variablen und wozu sind die gut (also was bedeuten sie)?


die variablen stehen für die jeweiligen editfelder in denen die buchstaben angezeigt werden sollen


Jakob_Ullmann - Do 18.02.10 18:01

user profile iconFatman hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin mir nicht sicher, ob ich der einzige bin, der deinen Quellcode nicht versteht... Wozu brauchst du die ganzen Variablen und wozu sind die gut (also was bedeuten sie)?


die variablen stehen für die jeweiligen editfelder in denen die buchstaben angezeigt werden sollen


:shock:

Mein Gott, meinst du nicht, das lässt sich einfacher lösen, wenn du das Teil mit Canvas zeichnest? Aber sonst wäre das mit Arrays sehr viel besser (= weniger Code, übersichtlicher) getan, wenn du einfach schreibst:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
A := Ord('a') - 1;
for i := 1 to 3 do
  for j := 1 to 5 do
begin
  if vara = z[i][j] then
    TEdit(FindComponent( Chr(A + i) + IntToStr(j) )).Text := feld.Text;
end;