El problema es el siguiente: tengo dos unidades, una llamada Cubos donde defino una clase "Cubo" y otra unidad llamada Fichas donde defino una clase "Ficha" la cual utiliza instancias de la clase Cubo. Todo compila bien pero en tiempo de ejecución al correr la sentencia Ficha.Create se produce el siguiente error en la primer línea del método constructor:
"Project Trabajo.exe raised exception class EAccessViolation with message 'Access violation at address 004505C6 in module 'Trabajo.exe'. Write of address 00000004'. Process stopped. Use Step or Run to continue."
Unidad Cubos:
Código Delphi
[-]
Unit Cubos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms,
Dialogs, StdCtrls;
type Cubo = class
public
r: integer;
g: integer;
b: integer;
despX: integer;
despY: integer;
triangulos: array [1..24] of triangulo;
constructor Create;
procedure setColor(rp:integer;gp:integer;bp:integer);
procedure setDesp(desX: integer;desY: integer);
end;
constructor Cubo.Create;
begin
r:=255;
g:=255;
b:=255;
despX:= 0;
despY:= 0;
end;
Unidad Fichas:
Código Delphi
[-]
Unit Fichas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Cubos;
type Ficha = class
public
cubos: array[1..4] of Cubo;
desplaX: integer;
desplaY: integer;
constructor create;
end;
implementation
constructor Ficha.create;
begin
cubos[1] := Cubo.Create; (en esta linea se produce el error)
cubos[2] := Cubo.Create;
cubos[3] := Cubo.Create;
cubos[4] := Cubo.Create;
cubos[1].setDesp(50,0);
cubos[2].setDesp(0,50);
cubos[3].setDesp(50,50);
cubos[4].setDesp(100,50);
end;
Alguien sabe por que? Gracias