Ich hab ein merkwürdiges Problem.
Ich bekomm bei einem Konstrukt von mir immer wieder nen Access Voilation fehler.
Aber ich werde daraus nicht schlau.
Code: Alles auswählen
procedure ClearMap(MapNum: Integer);
var
i: Integer;
begin
for i := 0 to High(Map[MapNum].Tile) do
SetLength(Map[MapNum].Tile[i], 0)
SetLength(Map[MapNum].Tile[0]);
Map[MapNum].Name := '';
Map[MapNum].Music := 'None.';
Map[MapNum].MaxX := MAX_MAPX;
Map[MapNum].MaxY := MAX_MAPY;
SetLength(Map[MapNum].Tile, MAX_MAPX+1);
App.PrintLn(ItoS(high(Map[MapNum].Tile)));
for i := 0 to MAX_MAPX do
SetLength(Map[MapNum].Tile[i], MAX_MAPY+1);
PlayersOnMap[MapNum] := NO;
SetLength(MapCache[MapNum].Data, 0);
end;
Und jetzt das Kuriose. Die Map die davor hier drin liegt, ist 100x100 groß (MapX und MapY) wenn ich das speicher ist alles okay.
Sobald ich 150x150 eintippel und speicher, gibts nen fehler, obwohl dieser Wert hier niemals vorkommt.
Mach ich da was grundlegendes Falsch?
Der Fehler tritt auch nur auf dem Linux Server auf. Auf Windows funktionier das Local ohne Probleme...
Okay wenn ich MAX_MAPX und Y auf 150 setze (konstante) dann funktioniert das alles einwandfrei.
Sobald ich was höheres rein setze hab ich wieder die probleme mit ner access voilation..
Scheinbar stimmt irgendwas nicht mit der speicher allokiierung -.-