Nou daar ben ik dan weer... hopelijk ditmaal een duidelijke fout omschrijving... maar tevens zal ik de code toevoegen zodat je het zelf kan zien ....
De bedoeling is dat ik een string gevuld met -> alleen <- maar 0 of 1-en inlees, om hier vervolgens een array of array of integer van 5x5 van te maken... daarna maak ik er een 3d array van die 5x5x8 is... heel vaag allemaal maar ik heb zo mijn redenen. Maar we zijn nog niet klaar ... deze 3Darray's zet ik vervolgens in een - function TForm1.Inladen : TList; - dan krijg ik een keurig lijst met 1 tjes en 0-etjes..
MAAAAAAR: wanneer ik buiten de functie de verzameling oproep om heb vervolgens weer op te zetten krijg ik hier en daar verkeerde waardes tussen door varierend van 3..6 tot 160000 ofzo ..
Heeft iemand enig idee ??
[ps .. de code is zo ver mogelijk gestript om er beetje inzicht in te krijgen... dus als sommige dingen nu niet meer logisch zijn... dat heeft een reden ]
Het probleem is: als ik de TList vervolgens weer omzet naar 5x5 array en deze weer uitlees heb ik 2 situaties:
- als ik het in LADEN() doe
De bedoeling is dat ik een string gevuld met -> alleen <- maar 0 of 1-en inlees, om hier vervolgens een array of array of integer van 5x5 van te maken... daarna maak ik er een 3d array van die 5x5x8 is... heel vaag allemaal maar ik heb zo mijn redenen. Maar we zijn nog niet klaar ... deze 3Darray's zet ik vervolgens in een - function TForm1.Inladen : TList; - dan krijg ik een keurig lijst met 1 tjes en 0-etjes..
MAAAAAAR: wanneer ik buiten de functie de verzameling oproep om heb vervolgens weer op te zetten krijg ik hier en daar verkeerde waardes tussen door varierend van 3..6 tot 160000 ofzo ..
Heeft iemand enig idee ??
[ps .. de code is zo ver mogelijk gestript om er beetje inzicht in te krijgen... dus als sommige dingen nu niet meer logisch zijn... dat heeft een reden ]
Het probleem is: als ik de TList vervolgens weer omzet naar 5x5 array en deze weer uitlees heb ik 2 situaties:
- als ik het in LADEN() doe
code:
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
| unit HappyCube;
interface
uses
SysUtils,
Classes,
Graphics,
Controls,
Forms,
StdCtrls,
contnrs ;
type
TVerzameling = array[0..7, 0..4, 0..4] of Integer;
TBlokje = array[0..4, 0..4] of Integer;
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ShowInList(myList : TList);
function StringToCube(CubesString : String) : TBlokje;
function Inladen : TList;
function VulVerzamelingList(myBlok : TBlokje): TVerzameling;
public
{ Public declarations }
end;
var
Form1: TForm1;
List : TList;
implementation
{$R *.DFM}
function TForm1.VulVerzamelingList(myBlok: TBlokje): TVerzameling;
var
TempVerzameling : TVerzameling;
Stuknr,row,col : Integer;
begin
for Stuknr := 0 to 7 do
for row := 0 to 4 do
for col := 0 to 4 do
TempVerzameling[Stuknr][row][col] := myBlok[row][col];
Result := TempVerzameling
end;
procedure TForm1.ShowInList(myList: TList);
var
p : ^TVerzameling;
temp : TVerzameling;
a,b,c,l : Integer;
begin
for l := 0 to myList.Count - 1 do
begin
p := myList.Items[l];
temp := p^;
for a := 0 to 7 do
for b := 0 to 4 do
for c := 0 to 4 do
ListBox1.Items.Add('l,a,b,c = ' + IntToStr(l) + ',' + IntToStr(a) + ',' + IntToStr(b) + ',' + IntToStr(c) + ' ---> ' + IntToStr(temp[a,b,c]));
end;
end;
function TForm1.Inladen : TList;
var
BlokA,BlokB,BlokC,BlokD,BlokE,BlokF : TBlokje;
tempVerz : TVerzameling;
VerzamelingenList : TList;
begin
BlokA := StringToCube('0101001111111100111111010'); // stuk 1
BlokB := StringToCube('0010111111011101111111010'); // stuk 2
BlokC := StringToCube('0010001110111110111000100'); // stuk 3
BlokD := StringToCube('0010001111111100111111011'); // stuk 4
BlokE := StringToCube('0010011111011101111100101'); // stuk 5
BlokF := StringToCube('0101001110111110111011011'); // stuk 6
VerzamelingenList := TList.Create;
tempVerz := VulVerzamelingList(BlokA);
VerzamelingenList.Add(@tempVerz);
tempVerz := VulVerzamelingList(BlokB);
VerzamelingenList.Add(@tempVerz);
tempVerz := VulVerzamelingList(BlokC);
VerzamelingenList.Add(@tempVerz);
tempVerz := VulVerzamelingList(BlokD);
VerzamelingenList.Add(@tempVerz);
tempVerz := VulVerzamelingList(BlokE);
VerzamelingenList.Add(@tempVerz);
tempVerz := VulVerzamelingList(BlokF);
VerzamelingenList.Add(@tempVerz);
Result := VerzamelingenList;
end;
function TForm1.StringToCube(CubesString: String): TBlokje;
var
row,col,i : integer;
tempBlokje : TBlokje;
begin
i := 1;
for row := 0 to 4 do
for col := 0 to 4 do
begin
tempBlokje[row,col] := StrToInt(Copy(CubesString, i, 1));
Inc(i);
end;
Result := tempBlokje;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowInList(Inladen);
end;
end. |