![]() |
Re: Keine 0 schreiben, aber lesen! o.O
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:
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.
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; Gruß Neutral General |
Re: Keine 0 schreiben, aber lesen! o.O
Ersetze in deinem Code mal Read und Write durch ReadBuffer und WriteBuffer. Die haben dieselbe Semantik, lösen aber eine Exception aus wenn das Lesen bzw. Schreiben nicht klappt. Dann bist du auf jeden Fall dahingehend auf der sicheren Seite, dass die Ein- und Ausgabe funktioniert.
|
Re: Keine 0 schreiben, aber lesen! o.O
Ich hab herausgefunden woran es liegt -.-^^
Ich habe wenn ich meinen Editor starte keine Textur angewählt gehabt (Die ID mit der gemalt wird = 0) So wenn man jetzt beim Opendialog auf öffnen geklickt hat, ist der Klick durch den Opendialog auf mein Image und hat ausgelöst das die ID meines Pinsels an diese Stelle gesetzt wird => Die 0 wird gesetzt und während meine Procedure noch läd schleicht sich eine 0 is mein Feld und dann will mein Programm malen und *booom* -.-^^ Hab jetzt den Start-Brush auf ID=4 gesetzt.... Aber wieso geht der Klick dadurch? Kann ich irgendwie machen das das nicht so ist ? :| Gruß Neutral General |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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