Autor Beitrag
Stauch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 140

Win 2000, Win XP
D4
BeitragVerfasst: Fr 12.12.03 10:55 
Ich möchte einem Objekt eine TEdit-komponente zuordnen. Wenn ich versuche die TEdits zur Laufzeit zu Erzeugen kommt die Fehlermeldung
"... Exception der Klasse EAccessViolation aufgetreten ..."

Hier der fragliche Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
 TSpieler = object
   txtP : TEdit;
   name : String;
   punkte: byte;   //Spielpunkte
   gewonnen : byte;//gewonnene Spiele
   aktiv:boolean;  //Spieler ist am Zug;
   procedure init(feldname:string);
  end;
...
procedure TSpieler.init(feldname:String);
 begin
 txtp.Create(form1); //<-- hier tritt der Fehler auf
 txtp.Name:='txtp'+feldname;
 txtp.Top:=20;
 txtp.Left:=20;
 txtp.Visible:=true;
 ...
 end;


Sieht jemand meinen Fehler?

Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt.

_________________
Geht das? Und wenn ja, warum nicht?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 12.12.03 11:05 
Es muss so ausschaun:
ausblenden Delphi-Quelltext
1:
txtP := TEdit.Create(Form1)					


Was mir aber aufgefallen ist.. du verwendest die alte OOP-Methode mit "object". Diese wird aber eigentlich nur mehr aus Kompatibilitätsgründen unterstützt, man sollte besser die neue Methode mit "class" (und damit dem automatischen Vorfahren TObject) verwenden..! Du kannst dir dazu mal meine OOP-Ausarbeitung auf www.x-spy.net/personal anschaun...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 12.12.03 11:06 
Hallo

du weißt wie man Objekte erstellt?

ausblenden Delphi-Quelltext
1:
2:
3:
Var myObject:TObject;
...
myobject:=TObject.create;


edit: zu langsam

achso und vergiß nicht, das Parent anzugeben

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Stauch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 140

Win 2000, Win XP
D4
BeitragVerfasst: Fr 12.12.03 11:09 
ja. Danke das war der Fehler

Ich wollte auch gleich die Sache mit "class" nachschauen, aber der Link hat nicht funktioniert. :-(

_________________
Geht das? Und wenn ja, warum nicht?
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 12.12.03 11:24 
Hi,

@Motzi

Der Link geht bei mir auch nicht.

MFG

- Ernesto -

// Edit: @Stauch: dass man object nicht mehr verwenden sollte kannst du auch in der Delphi-Hilfe unter Objekttypen lesen. Hier hibt es auch OOP Tutorials.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 12.12.03 11:35 
Versteh ich nicht.. bei mir funktioniert der Link problemlos..! :? Naja.. werd mir eh einen neuen Webspace zulegen...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Stauch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 140

Win 2000, Win XP
D4
BeitragVerfasst: Fr 12.12.03 11:38 
@Ernesto
auf die Schnelle hab ich der Hilfe nix gefunden über class statt object.

Liegt vielleicht daran, dass ich Delphi 4 benutze

_________________
Geht das? Und wenn ja, warum nicht?
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 12.12.03 11:52 
Hi,

Zitat:
Liegt vielleicht daran, dass ich Delphi 4 benutze


Möglich. Ich habe kein Delphi 4. Ich poste mal den kurzen Auszug aus der Delphi-Hilfe:

Delphi-Hilfe zu Objekttypen hat folgendes geschrieben:
Als Alternative zu Klassentypen können mit der folgenden Syntax auch Objekttypen deklariert werden:

type Objekttypname = object (VorfahrObjekttyp)

Elementliste
end;

Objekttypname ist ein beliebiger, gültiger Bezeichner, (VorfahrObjekttyp) ist optional, und Elementliste definiert die Felder, Methoden und Eigenschaften der Klasse. Wird kein VorfahrObjekttyp angegeben, hat der neue Typ keinen Vorfahren. Bei Objekttypen können Elemente nicht als published deklariert werden.
Da Objekttypen nicht von TObject abgeleitet sind, verfügen sie über keine integrierten Konstruktoren, Destruktoren oder andere Methoden. Instanzen können mit der Prozedur New erstellt und mit Dispose freigegeben werden. Sie können Variablen eines Objekttyps aber auch einfach wie bei einem Record-Typ deklarieren.

Objekttypen werden nur aus Gründen der Abwärtskompatibilität unterstützt und sollten in neuen Anwendungen nicht mehr verwendet werden.


MFG

- Ernesto -
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 12.12.03 12:02 
Die Objekttypen stammen noch aus TurboPascal-Zeiten... die Class-Typen gibt es schon seit Delphi1! Einfach folgendermaßen deklarieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TMyObject = class(TObject)
    private
      // private Felder
    protected
      // protected Felder
    public
      // public Felder
  end;

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 12.12.03 12:36 
Hi,

Motzi hat folgendes geschrieben:
die Class-Typen gibt es schon seit Delphi1!


Ich weiss. Ich meinte, dass möglicherweise der Text über Objekktypen nicht in der Delphi 4 Hilfe enthalten ist.

MFG

- Ernesto -