![]() |
Prinzip funktioniert anscheinend nicht...
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:
Soweit so gut.
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} Ändern tu ich so:
Delphi-Quellcode:
und die eine Variable ändern tu ich so:
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;
Delphi-Quellcode:
GetPlayerPos sagt mir die ID des aktuellen records, bei dessen Nachbarn (deren ID's in nextcaves stehen) ich die variable ändern möchte.
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; 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 |
Re: Prinzip funktioniert anscheinend nicht...
Du musst den Record auch wieder an die Stelle schreiben, von dem du ihn geholt hast:
Delphi-Quellcode:
procedure TGameControl.UseEdE;
var i:integer; n: integer; cavece:TCave; begin Dec(EdE); for i:=1 to 4 do begin n := GetCaveByID(GetPlayerPos).nextCaves[i]; if n>0 then begin cavece:=GetCaveByID(n); cavece.isVisible:=true; ChangeCave(n,cavece); end; end; paintmap; end; |
Re: Prinzip funktioniert anscheinend nicht...
cool, danke.
Hatte anscheinend gerade ein Knoten im Hirn, ich hab das an ähnlichen Stellen schon mehrmals gemacht... DANKE! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz