Einzelnen Beitrag anzeigen

Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 21:26
Hallo

Ich habe mir diese Klasse angelegt:
Delphi-Quellcode:
CStunde = class(Tobject)
 public
 Panel: TPanel;
 list: array[1..4] of TLabel;
 procedure Create(t,l,h,w: integer; form: TForm);

end;
(Hat noch keine Lösch-Methode, aber das Problem gehe ich später an. )

Delphi-Quellcode:
Procedure CStunde.create(t,l,h,w: integer; Form: TForm);
var
i: byte;
begin

Panel := TPanel.Create(nil);

 with Panel do
  begin
  Parent:= Form;
  Top:= t;
  ...
  color:=clred;
  end;

for i:=1 to 4 do
  begin
  list[i]:= TLabel.create(nil);
  list[i].Parent:= Panel;
  list[i].left:= 10;
  end;
end;
Wenn ich das Create mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
sp: CStunde;
begin
sp.Create(50,50,200,250,Form1);
end;
aufrufe wird das Panel mit den Labels schön angezeigt, wenn ich das Formular schließe bekomme ich eine AV, was wahrscheinlich am fehlenden destroy oder free liegt, aber dass ist nicht mein primäres Problem.

Wenn ich es aber als
Delphi-Quellcode:
var
  Form1: TForm;
  sp: CStunde;
global anlege bekomme ich beim create dann eine AV.

Weiss jemand, warum dass so ist und wie ich es trotzdem global anlegen kann?

Nikolas
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat