AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unterkategorie bei einer prozedur

Ein Thema von Amo · begonnen am 12. Feb 2006 · letzter Beitrag vom 12. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#1

unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 13:06
Also, ich habe mir eine Komponente gemacht, die ich eben aufs formular ziehen kann. Diese hat nun einige funktionen und prozeduren. Bis dahin kein problem, funktioniert auch alles prima. Nur jetzt habe ich so 15 weitere prozeduren eingefügt, die alle eigentlich zusammengehören.
Jetzt das problem :
Was muss ich machen um diese prozeduren so aufzurufen später:
MyComponent.Sammlung.NummerEins Ich komme nicht weiter als "MyComponent.Sammlung" . Was muss ich machen um bei Sammlung "weiterzukommen"?
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 13:23
so wie du das meinst, funktioniert das nicht, du müsstest ein unterobjekt erstellen, und dieses als feld des hauptobjektes angeben, das unterobjekt beinhaltet dann die proceduren
Delphi-Quellcode:
type
  TUnterObjekt = class(TObject)
  public
    procedure Dings1;
  end;

  TOberObjekt = class(TObject)
  public
    Sammlung: TUnterObjekt;
  end;
nur nicht vergessen, dass Unterobjekt im OnCreate des OberObjektes zu erzeuchen


Aber ob diese variante so sinnvoll ist ??
Oliver Hanappi
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 13:37
Und wie mache ich das mit dem create jetzt? das hier geht schon mal nicht:
Delphi-Quellcode:
procedure TOberObjekt.OnCreate;
begin
  create TUnterObjekt;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 13:39
Delphi-Quellcode:
type
  TUnterObjekt = class(TObject)
  public
    procedure Dings1;
  end;

  TOberObjekt = class(TObject)
  public
    constructor create;
    Sammlung: TUnterObjekt;
  end;
constructor TOberObjekt.Create;
begin
   sammlung := TUnterObjekt.Create;
end;
[Edit:] constructor sollte natürlich auch definiet werden[/Edit]
Markus Kinzler
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 13:50
"Incompatible types: 'TUnterObjekt' and 'Class Reference'"

und ich musste "constructor create" nach "Sammlung: TUnterObjekt" setzen, gab sonst noch mehr fehler..
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 14:04
Ich habe den Code mal in Delphi getestet, bei mir funktionier er ( bis auf die Tatsache das, wie du erwähnt hast der Konstruktor nach den Eigenschaften deklariert werden muss).

Poste mal den gesamten Code.
Markus Kinzler
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 14:38
Also ich habe gerade gemerkt was ich falsch gemacht hatte (ich hatte ".create" vergessen).
Also DAS problem wäre gelöst...jetzt gibt es aber noch mehr schwierigkeiten.

Normalerweise habe ich dann die prozeduren (weiter unten im code) so aufgerufen und eben gesagt was die machen sollen: (die Unit heißt Amo)
Delphi-Quellcode:
procedure TAmo.BlaBlaBla;
begin
  //alles was die prozedur machen soll
end;
Das geht ja jetzt nicht mehr, wenn DIESE prozedur zur "Sammlung" gehört. Also
- procedure TAmo.Sammlung.BlaBlaBla;
- procedure Sammlung.BlaBlaBla;
- procedure TSammlung.BlaBlaBla;
- procedure BlaBlaBla;
gehen alle nicht. Wie mache ich das denn hier?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 14:48
Die Methode gehört dann in die (Unter-)Klasse. Da ich nicht weiß, wie die Unterklasse heißt nehme ich mal an sie heiße TSammlung dann müsste das Ganze so gemacht werden:
Delphi-Quellcode:
type
  TSammlung = class
    procedure BlaBlaBla;
  end;

  TAmo = class
  public
    Sammlung: TSammlung;
    constructor Create;
  end;

...
var
   Amo: TAmo;
...
implementation
...
constructor TAmo.Create;
begin
    Sammlung := TSammlung.Create;
    ...
end;

procedure TSammlung.BlaBlaBla;
begin
...
nun kannst du sie mit Amo.Sammlung.Blablabla; aufrufen
Markus Kinzler
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 15:05
Guuut, das geht jetzt auch *freu*

Jetzt wieder zum nächsten Problem..

Delphi-Quellcode:
procedure TSammlung.BlaBlaBla;
begin
  AndereProzedur; // hier geht es wieder nicht
end;
"AndereProzedur" soll wie ihr seht in TSammlung.BlaBlaBla ausgeführt werden. "AndereProzedur" wurde in TAmo deklariert. Das geht jetzt also nicht. Wenn ich anstelle von "AndereProzedur" jetzt "TAmo.AndereProzedur" eingebe will er das auch nicht ("This form of method call only allowed for class methods").
Was jetzt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: unterkategorie bei einer prozedur

  Alt 12. Feb 2006, 15:22
Du musst dem Unterobjekt eine Referenz auf seinen Eigentümer mitgeben.
1. Dazu mußt du die Klasse um eine Eigenschaft Owner erweitern.
2. Erstellen eines Konstruktor der diese Eigenschaft setzt.
3. Ändern des Konstruktors der Oberklasse.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:42 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