Hallo!
Das wird jetzt etwas länger,aber ich bin total am verzweifeln...
Also erstmal was ich machen will.
Ich habe ein Array of record welches u.a. eine Boolsche Variable, eine ID und ein array[1..4] of integer in das ID's von anderen
Records aus dem selben Array gespeichert werden.
Nun möchte ich auf ein Record, dessen ID in dem Array eines vorhandenen records steht, zugreifen und dort besagte Boolsche variable ändern.
Zugreifen tu ich so:
Delphi-Quellcode:
function TCaveControl.GetCaveByID(ID: integer): TCave;
var x:integer;
begin
for x:=0 to High(_Caves) do
if _Caves[x].ID=ID then
begin
result:=_Caves[x];
exit;
end;
end;
{_Caves=array of TCave}
Soweit so gut.
Ändern tu ich so:
Delphi-Quellcode:
procedure TCaveControl.ChangeCave(ID: integer; Cave: TCave);
var t:integer;
begin
for t:=0 to High(_Caves) do
if _caves[t].ID=ID then
begin
_caves[t]:=cave;
exit;
end;
end;
und die eine Variable ändern tu ich so:
Delphi-Quellcode:
procedure TGameControl.UseEdE;
var i:integer;
cavece:TCave;
begin
Dec(EdE);
for i:=1
to 4
do
if GetCaveByID(GetPlayerPos).nextCaves[i]>0
then
begin
cavece:=GetCaveByID(GetCaveByID(GetPlayerPos).nextCaves[i]);
cavece.isVisible:=true;
ChangeCave(getPlayerPos,cavece);
end;
paintmap;
end;
GetPlayerPos sagt mir die ID des aktuellen records, bei dessen Nachbarn (deren ID's in nextcaves stehen) ich die variable ändern möchte.
Nun zu meinem Problem:
Wenn ich das so mache, tut er alles, nur nicht das was er soll...
also ein konkretes Beispiel:
aktuelles record:
nextcaves=25 19 7 0
ID=14
25 ist nicht sichtbar
19 ist nicht sichtbar
7 ist sichtbar
0 wird ausgefiltert.
nun ändert der aber so:
aktuelles (14) ist nichtmehr sichtbar
25 ist sichtbar, nun aber mit 4 verbunden, welches vorher nicht war
19 nicht sichtbar
7 ist sichtbar (war es aber schon vorher)
Hat einer von euch eine Ahnung wieso das so ist?
Gruß Teekeks