Autor Beitrag
IMM0rtalis
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 26.05.09 17:10 
Hi, ich habe folgendes Problem:
Ich bekomme in der Zeile "Spielaufbau.Spielfeld[i].Feld := TShape.Create(MainForm);" immer eine EAccessviolation-Fehlermeldung und weiß nicht genau warum.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TMainForm = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TSpielfeldRecord = record
    Feld : TShape;
    Typ : string;
  end;

  TSpielaufbau = class(TObject)
  test : TShape;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Spielfeld : Array[0..39of TSpielfeldRecord;
    procedure LoadSpielfeld;
  end;



var
  MainForm: TMainForm;
  Spielaufbau: TSpielaufbau;


implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
  Begin
    //Starteigenschaften
    MainForm.Color := $d9f0ed;

    //Spielaufbau
    Spielaufbau.LoadSpielfeld;
  End;



procedure TSpielaufbau.LoadSpielfeld;
 var
 i : Integer;
  Begin
    //--
    for i:=0 to 39 do
      Begin
        Spielaufbau.Spielfeld[i].Feld := TShape.Create(MainForm);
        Spielaufbau.Spielfeld[i].Feld.Parent := MainForm;
        Spielaufbau.Spielfeld[i].Feld.Shape := stRoundRect;
        Spielaufbau.Spielfeld[i].Feld.Brush.Color := clWhite;
        Spielaufbau.Spielfeld[i].Feld.Width := 50;
        Spielaufbau.Spielfeld[i].Feld.Height := 50;
        // Posititionierung
        Spielaufbau.Spielfeld[i].Feld.Left := 10;
        Spielaufbau.Spielfeld[i].Feld.Top := 0;

        Spielaufbau.Spielfeld[i].Feld.Enabled := false;
        Spielaufbau.Spielfeld[i].Feld.Show; 

      End;

  End;


end.


Es hat glaube ich etwas mit dem Record oben zu tun... selbst wenn ich "Spielaufbau.Spielfeld[i].Typ" (beachte 'Typ') einen String zuweise, gibt es eine EAccessviolation...

Würdet ihr das überhaupt so machen? Aber ich mächte gerne den Array aufteilen.. :( da sollen ja noch mehr Sachen in den Record kommen...

Bitte um shcnelle Hilfe^^

thx schonmal

MfG


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 26.05.2009 um 17:32
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 26.05.09 17:23 
Nun ja, du musst das Spielfeld ja auch erstmal erzeuigen:
ausblenden Delphi-Quelltext
1:
Spielfeld:=TSpielaufbau.Create;					

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
IMM0rtalis Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 26.05.09 17:29 
ausblenden Delphi-Quelltext
1:
Spielaufbau:=TSpielaufbau.Create;					


O.o ^^ thx^^ wusste ich nicht... habe ja auch noch nie zwei Klassen in einer Unit erstellt.. :( bei zwei verschiedenen Units gabs das Problem irgendwie nicht^^

dankööö^^
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 26.05.09 17:34 
Jede Klasseninstanz muss irgendwann mal erstellt werden, ob in mehreren Units oder nicht. :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.05.09 00:44 
Und auch wieder freigegeben werden! In FormDestroy muss deshalb noch
ausblenden Delphi-Quelltext
1:
Spielaufbau.Free;