Ach son Quatsch.. Es liegt wie gesagt nicht am laden. Hab mir schonmal jede einzelne ID ausgeben lassen nach dem laden und keiner war 0. (Gültige ID-Werte sind x*4)
Aber meine Draw Procedure verursacht immer eine
AV.
Delphi-Quellcode:
procedure TcfrMapView.Draw(dx,dy: Integer);
var i: Integer;
tdx,tdy: Integer;
tb,tob: TBitmap;
begin
with ImgSurface.Picture.Bitmap.Canvas do
begin
Brush.Color := clblack;
Rectangle(-1,-1,Width+1,Height+1);
if Length(frmMain.Map.MapPlan) = 0 then exit;
// Tiles
for i:= 0 to High(frmMain.Map.MapPlan) do
begin
tdx := ((i mod frmMain.Map.Width)*64)+(-dx*64);
tdy := ((i div frmMain.Map.Width)*64)+(-dy*64);
if (frmMain.Map.MapPlan[i] <> High(Cardinal)) and
(tdx <= imgSurface.Width) and
(tdy <= imgSurface.Height) and
(tdx >= 0) and
(tdy >= 0) then
begin
tb := TBitmap.Create;
tob := TBitmap.Create;
tb.Assign(frmMain.Textures[(frmMain.Map.MapPlan[i] div 4)-1].Bitmap);
tob.Assign(frmMain.Textures[(frmMain.Map.MapPlan[i] div 4)-1].Overlay);
RotateBitmap(tb,(frmMain.Map.MapPlan[i] mod 4)*90);
RotateBitmap(tob,(frmMain.Map.MapPlan[i] mod 4)*90);
Draw(tdx,tdy,tb);
Draw(tdx,tdy,tob);
end;
end;
... // Unwichtig
end;
Warum krachts da? Wenn ich Einzelschritte mache oder mir bei jedem/einem beliebigen Schleifendurchlauf ne Message anzeigen lasse dann klappt alles -.- Und vorher hat auch alles geklappt... Die procedure HAT mal geklappt.. und seitdem meine IDs nicht bei 0 anfangen (0,4,8,12,..) sondern bei 4 (4,8,12,...) krachts da irgendwo.. aber ich habe sonst auch alles auf 4 umgestellt. Das ist sicher.
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."