AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prinzip funktioniert anscheinend nicht...

Ein Thema von Teekeks · begonnen am 28. Sep 2009 · letzter Beitrag vom 28. Sep 2009
Antwort Antwort
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

Prinzip funktioniert anscheinend nicht...

  Alt 28. Sep 2009, 17:36
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
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.980 Beiträge
 
Delphi 12 Athens
 
#2

Re: Prinzip funktioniert anscheinend nicht...

  Alt 28. Sep 2009, 17:51
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;
Uwe Raabe
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Prinzip funktioniert anscheinend nicht...

  Alt 28. Sep 2009, 17:59
cool, danke.
Hatte anscheinend gerade ein Knoten im Hirn, ich hab das an ähnlichen Stellen schon mehrmals gemacht...

DANKE!
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz