Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 20.07.04 18:46 
Hallo,
ich schreibe im moment ein pacman clone und habe ein array mit "kis" und nun möchte ich einen level editor schreiben und bin jetzt bei der löschen funktion angelangt.
Jetzt möchte ich einfach die richtige ki löschen.dazu muss ich erstmal ermittelen welche ki die richtige ist und die lösche ich dann einfach:
KI:index merken
kis in einen neuen array zu weisen und den auslasen der den index hat und fertig.
naja so habe ich mir es gedacht aber leider geht es nicht.....
er setzt index flasch. mein code dazu ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
   for i:=0 to HIGH(ki) do begin
        if (ki[i].x = x div mapX) and (ki[i].y = y div mapY) then begin
          index:=i;
          break;
        end;
      end;
      ShowMessage(IntToStr(I));

      for i:=0 to HIGH(KI) do begin
        if i <> index then begin
          SetLength(k,high(k)+2);
          k[HIGH(K)]:=ki[i];
        end;
      end;

      SetLength(ki,0);
      SetLength(ki,high(k));

      for i:=0 to HIGH(KI) do begin
        ki[i]:=k[i];
      end;

_________________
MFG
Michael Springwald, "kann kein englisch...."
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 20.07.04 18:53 
Hallo

warum 2 arrays?
du hast deinen zu löschenden index, und kopierst einfach die Elemente, die dahinter liegen um eins nach vorne, in etwa so:
ausblenden Delphi-Quelltext
1:
for i:=zu_löschender_Index to länge_des_array-1 do Array[i]:=array[i+1];					

anschließend noch das array um eins verringern.

Oder du nimmst eine Tlist oder Objectlist, die haben das löschen von elementen schon drin und sind in dieser beziehung einfacher zu handhaben.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 20.07.04 21:17 
mein problem ist irngendwie schon das der index nicht stimmt :(
könnte ich mal versuchen deinen tipp, danke !!!!

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 29.07.04 12:15 
ich habe es mal so gemacht wie du es gesagt hast:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TBO.DeleteBall(Index:Integer);
var
  i:Integer;
begin
  for i:=Index to HIGH(BALL)-1 do begin
    BALL[i]:=BALL[i+1];
  end;

  if HIGH(BALL)-1 >= 0 then
    SetLength(BALL,high(ball)-1);

  if HIGH(BALL) < 0 then
  ShowmEssage('OK');

end;

nur jetzt bekomme ich folgendes fehlermeldung:
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt BreakOut.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00418867 in Modul 'BreakOut.exe'. Lesen von Adresse 00069B98'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

warum ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 29.07.04 23:04 
Zeile 10 muss heißen:
ausblenden Delphi-Quelltext
1:
SetLength(HBALL, Length(HBALL)-1);					


Dann sollte es funzen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 30.07.04 08:44 
ich hätte nicht gedacht das es an lenght liegen würde, habe in der hilfe zwar geschaut, naja, jetzt gehts so wie gewütnscht !!!

_________________
MFG
Michael Springwald, "kann kein englisch...."