Autor Beitrag
Bockscar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105



BeitragVerfasst: Sa 04.03.06 10:34 
Hi. Bei der Anwendung folgenden Codes bekomme ich eine EAccessviolation und das Programm lässt sich nicht starten.

ausblenden volle Höhe 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:
 procedure Tcroupier.set_winmatrix;
 var i :integer;
 begin
 setlength(winmatrix,36);

  //Für Zahlen in den Randreihen
  for i := 1 to 24 do
   setlength(winmatrix[randreihe[i]],14);
  //Für Zahlen der Mittelreihe
  for i := 1 to 12 do
   setlength(winmatrix[mittereihe[i]],17);
  
//In den Arrays randreihe und mittereihe stehen die indexes von 1..36 der winmatrix die entweder nen laenge 14 oder 17 //haben sollen. Das mehrdimensionale array ist eben "unsymmetrisch"
  
//Winmatrix füllen für Zahlen in den Randreihen
  for i := 0 to 13 do
   begin
    winmatrix[1][i] := a1[i];
    winmatrix[3][i] := a3[i];
    winmatrix[4][i] := a4[i];
    winmatrix[6][i] := a6[i];
    winmatrix[7][i] := a7[i];
    winmatrix[9][i] := a9[i];
    winmatrix[10][i] := a10[i];
    winmatrix[12][i] := a12[i];
    winmatrix[13][i] := a13[i];
    winmatrix[15][i] := a15[i];
    winmatrix[16][i] := a16[i];
    winmatrix[18][i] := a18[i];
    winmatrix[19][i] := a19[i];
    winmatrix[21][i] := a21[i];
    winmatrix[22][i] := a22[i];
    winmatrix[24][i] := a24[i];
    winmatrix[25][i] := a25[i];
    winmatrix[27][i] := a27[i];
    winmatrix[28][i] := a28[i];
    winmatrix[30][i] := a30[i];
    winmatrix[31][i] := a31[i];
    winmatrix[33][i] := a33[i];
    winmatrix[34][i] := a34[i];
    winmatrix[36][i] := a36[i];
   end;
  for i := 0 to 13 do
   begin
    winmatrix[2][i] := a2[i];
    winmatrix[5][i] := a5[i];
    winmatrix[8][i] := a8[i];
    winmatrix[11][i] := a11[i];
    winmatrix[14][i] := a14[i];
    winmatrix[17][i] := a17[i];
    winmatrix[20][i] := a20[i];
    winmatrix[23][i] := a23[i];
    winmatrix[26][i] := a26[i];
    winmatrix[29][i] := a29[i];
    winmatrix[32][i] := a32[i];
    winmatrix[35][i] := a35[i];
   end;
end;


Winmatrix ist ein mehrdimensionales array mit 36 elementen in dimension 1 und diesen neuen arrays werden werte aus folgenden konstanten arrays zugewiesen.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
a1:  array[0..13of integer=(1,37,40,73,97,99,111,112,134,145,150,151,153,155);
a4:  array[0..13of integer=(4,40,43,75,100,112,114,134,135,145,150,151,152,154);
a7:  array[0..13of integer=(7,43,46,77,101,114,116,135,136,145,150,151,153,155);
a10: array[0..13of integer=(10,46,49,79,102,116,118,136,137,145,150,151,152,154);

...



Eigentlich müsste das ja klappen, aber die Violation sagt mir ja dass ich irgendwas falsch mache.

Vielen Dank für die Hilfe im Vorraus
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 04.03.06 10:44 
ausblenden Delphi-Quelltext
1:
2:
3:
setlength(winmatrix,36);
//...
winmatrix[36][i] := a36[i];
Fehler klar? Indizierung geht von 0 bis 35, nicht von 1 bis 36

_________________
We are, we were and will not be.
Bockscar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105



BeitragVerfasst: Sa 04.03.06 10:49 
super klappt direkt! vielen dank