| Autor |
Beitrag |
Stauch
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: 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:
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; gewonnen : byte; aktiv:boolean; procedure init(feldname:string); end; ... procedure TSpieler.init(feldname:String); begin txtp.Create(form1); txtp.Name:='txtp'+feldname; txtp.Top:=20; txtp.Left:=20; txtp.Visible:=true; ... end; |
Sieht jemand meinen Fehler?
Moderiert von Motzi: Code- durch Delphi-Tags ersetzt.
_________________ Geht das? Und wenn ja, warum nicht?
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 12.12.03 11:05
Es muss so ausschaun:
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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 12.12.03 11:06
Hallo
du weißt wie man Objekte erstellt?
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 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: 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
      
Beiträge: 528
Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
|
Verfasst: 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
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: 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
      
Beiträge: 528
Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
|
Verfasst: 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
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TMyObject = class(TObject) private protected public end; |
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
ErnestoChe
      
Beiträge: 528
Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
|
Verfasst: 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 -
|
|