AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Access Violation bei zweidimensionalem array of TBitmap
Thema durchsuchen
Ansicht
Themen-Optionen

Access Violation bei zweidimensionalem array of TBitmap

Ein Thema von Chaosente · begonnen am 19. Apr 2007 · letzter Beitrag vom 20. Apr 2007
Antwort Antwort
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#1

Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 16:40
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:
    FObjects[i,i].Width:=j; Hier noch mal der ganze code zum besseren verständnis...

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...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 16:46
Und wo werden deine TBitmaps erzeugt auf welche das FObjects-Array zeigen soll?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#3

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 16:48
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;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 17:09
Hallo,

deine Schleife läuft zu weit:

Delphi-Quellcode:
// for i:=0 to size do
for i := 0 to size - 1 do
Gruß Hawkeye
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#5

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 17:12
Nette idee liegt aber nicht daran,denn ich kriege den fehler dierekt beim ersten durchlauf und zweitens hab ichs grad getestet, ändert nichts...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 18:00
Zitat von Chaosente:
Nette idee liegt aber nicht daran,denn ich kriege den fehler dierekt beim ersten durchlauf und zweitens hab ichs grad getestet, ändert nichts...
Es ändert schon was, ohne die Korrektur wirst du weiterhin Zugriffsfehler erhalten. Aber es war nicht der einzige Fehler:

Delphi-Quellcode:
constructor TKKSpielfeld.Create(size:integer; AOwner: TComponent);
var
  i,j,count:integer;
begin
  inherited Create (AOwner); // das fehlte!
  count:=0;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#7

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 19. Apr 2007, 19:49
kann mir jetzt auch ncoh jemand erklären was das ganze bewirkt??? Ich benutze ungern Code den ich nicht verstehe...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Access Violation bei zweidimensionalem array of TBitmap

  Alt 20. Apr 2007, 08:58
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz