![]() |
Access Violation bei zweidimensionalem array of TBitmap
Also hier mal mein Problem, ich kriege folgenden fehler:
--------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00453935 in Modul 'Project1.exe'. Lesen von Adresse 00000000' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- das ganze in dieser zeile:
Delphi-Quellcode:
Hier noch mal der ganze code zum besseren verständnis...
FObjects[i,i].Width:=j;
Delphi-Quellcode:
unit KKSpielfeld;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, KKObjects, Math; type TKKSpielfeld = class(TImage) private FObjects: array of array of TBitmap; public constructor Create(size:integer; AOwner: TComponent); end; implementation constructor TKKSpielfeld.Create(size:integer; AOwner: TComponent); var i,j,count:integer; begin count:=0; size:=(size*2+1); SetLength(FObjects,size,size); for i:=0 to size do begin j:=(trunc(power(-1,i))+2)*10; FObjects[i,i].Width:=j; FObjects[i,i].Height:=j; count:=count+j; end; self.Parent:=TWinControl(AOwner); self.width:=count; self.height:=count; end; end. Hoffe jemand weis was damit anzufangen ich verstehe es nämlchi grad nciht so sehr... |
Re: Access Violation bei zweidimensionalem array of TBitmap
Und wo werden deine TBitmaps erzeugt auf welche das FObjects-Array zeigen soll?
|
Re: Access Violation bei zweidimensionalem array of TBitmap
hui, das mir aber peinlich....
leider kriege ich es grad nciht hin... ich hab es so probiert, aber das gibt den selben fehler in der create zeile vermutlich wieder son anfänger ding... hier mein code:
Delphi-Quellcode:
constructor TKKSpielfeld.Create(size:integer; AOwner: TComponent);
var i,j,count:integer; begin count:=0; size:=(size*2+1); SetLength(FObjects,size,size); for i:=0 to size do begin j:=(trunc(power(-1,i))+2)*10; FObjects[i,i]:=TBitmap.Create; FObjects[i,i].Width:=j; FObjects[i,i].Height:=j; count:=count+j; end; self.Parent:=TWinControl(AOwner); self.width:=count; self.height:=count; end; |
Re: Access Violation bei zweidimensionalem array of TBitmap
Hallo,
deine Schleife läuft zu weit:
Delphi-Quellcode:
Gruß Hawkeye
// for i:=0 to size do
for i := 0 to size - 1 do |
Re: Access Violation bei zweidimensionalem array of TBitmap
Nette idee liegt aber nicht daran,denn ich kriege den fehler dierekt beim ersten durchlauf und zweitens hab ichs grad getestet, ändert nichts...
|
Re: Access Violation bei zweidimensionalem array of TBitmap
Zitat:
Delphi-Quellcode:
Gruß Hawkeye
constructor TKKSpielfeld.Create(size:integer; AOwner: TComponent);
var i,j,count:integer; begin inherited Create (AOwner); // das fehlte! count:=0; |
Re: Access Violation bei zweidimensionalem array of TBitmap
kann mir jetzt auch ncoh jemand erklären was das ganze bewirkt??? Ich benutze ungern Code den ich nicht verstehe...
|
Re: Access Violation bei zweidimensionalem array of TBitmap
Du hast eine Klasse von TImage abgeleitet. Da du dem Constructor in deiner Ableitung neue Parameter gegeben hast und auch nicht den TImage Konstruktor überschrieben hast, wird dieser versteckt. Dadurch musst du nun dafür sorgen, dass du den Originalen Konstruktor aufrufst von TImage, damit dieses sich auch ordentlich anlegen kann. (Wofür ein Constructor gebraucht wird, ist hoffentlich klar).
Auch müsstest du zur Zeit einen Hinweis vom Compiler erhalten, dass dein Constructor den virtuellen Constructor von TImage verdeckt, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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