AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Unterschiede, ob eigene Klasse global deklariert wurde?
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiede, ob eigene Klasse global deklariert wurde?

Ein Thema von Nikolas · begonnen am 28. Feb 2007 · letzter Beitrag vom 28. Feb 2007
Antwort Antwort
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, 20: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
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:31
Hallo,

vielleicht, weil Du Deine Klasse nicht instanziierst?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:38
sp := CStunde.Create(50,50,200,250,Form1);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:49
Stimmt, klingt einleuchtend. Und eigentlich weiss ich das auch. (Siehe Create-implementation)

Wenn ich das jetzt aber so mache bekomme ich unabhängig von der Art der Deklaration von sp ein freundliches:
Zitat:
E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt
Versteht das jemand?

Danke für die Antworten bis jetzt.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:50
Nein, erst wenn er einen Constructor erstellt, also:

Delphi-Quellcode:
Type
  CStunde = class(Tobject)
  Public
    Panel: TPanel;
    list: array[1..4] of TLabel;
    Constructor Create(t,l,h,w: integer; form: TForm);
  End;
{...}
Bye Christian
Christian
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:53
Stimmt, haben wir wohl Alle übersehen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: Unterschiede, ob eigene Klasse global deklariert wurde?

  Alt 28. Feb 2007, 20:54
Dankeschön. Ich habe anscheined zu lange nichts richtiges mehr programmiert.

Danke an alle, die mir weitergeholfen haben. Ich liebe dieses Forum
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  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 16:20 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