AGB  ·  Datenschutz  ·  Impressum  







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

Kind as Opa innerhalb der Deklerartion

Ein Thema von dmdjt · begonnen am 9. Sep 2009 · letzter Beitrag vom 10. Sep 2009
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#31

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 09:02
AUA.

Wenn man sowas braucht, dann stimmt ganz einfach die Klassenhierarchie nicht. Hier gilt halt nicht TSohn is a TVater is a TOpa. Da muss vermutlich irgendwo noch eine vierte Klasse rein, dann kann man sich die Verrenkungen sparen (asm ).
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#32

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 09:49
Zitat von uligerhardt:
Wenn man sowas braucht, dann stimmt ganz einfach die Klassenhierarchie nicht.
Sicher?

Ich habe das auch noch nie gebraucht, aber es ist in mehreren anderen Programmiersprachen möglich. Warum soll denn hier grad Delphi der Maßstab sein (außer, dass wir hier in einem Delphi-Forum sind)? Ich gebe zu, dass mir diesbezüglich theoretisches Wissen fehlt. Ich würde diesen Fakt (da er des öfteren in Delphi-Foren auftaucht) nur mal geklärt wissen. Nicht, dass das einer mal behauptet hat und alle anderen plappern das nur nach.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#33

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 11:08
Zitat von sirius:
Zitat von uligerhardt:
Wenn man sowas braucht, dann stimmt ganz einfach die Klassenhierarchie nicht.
Sicher?
Natürlich nicht, das ist nur ein Bauchgefühl. Allerdings ein ziemlich starkes.

Zitat von sirius:
Ich habe das auch noch nie gebraucht, aber es ist in mehreren anderen Programmiersprachen möglich. Warum soll denn hier grad Delphi der Maßstab sein (außer, dass wir hier in einem Delphi-Forum sind)?
Ich kenn das nur aus C++, wo man TOpa::MeineMethode schreiben kann. Das ist aber vermutlich eher aus Konsistenzgründen so gemacht, weil :: halt nunmal der Scope-Operator ist. Und benenn in C++ mal ne Basisklasse um - toll, wie oft man da AlterKlassenname::Methode durch NeuerKlassenname::Methode ersetzen darf. Deswegen sieht man ja auch oft
Code:
typedef Klassenname inherited; // oder base oder super oder ...
Zitat von sirius:
Ich gebe zu, dass mir diesbezüglich theoretisches Wissen fehlt. Ich würde diesen Fakt (da er des öfteren in Delphi-Foren auftaucht) nur mal geklärt wissen. Nicht, dass das einer mal behauptet hat und alle anderen plappern das nur nach.
Ist mir klar, dass ich nicht der erste bin, der die Behauptung äußert.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#34

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 12:03
Zitat von uligerhardt:
Ich kenn das nur aus C++, wo man TOpa::MeineMethode schreiben kann.
Und in Matlab schreibt man MeineMethode@TOpa, in Java schreibt man super.super .....
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#35

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 12:24
Zitat von sirius:
Zitat von uligerhardt:
Ich kenn das nur aus C++, wo man TOpa::MeineMethode schreiben kann.
Und in Matlab schreibt man MeineMethode@TOpa, in Java schreibt man super.super .....
Wie "wie jetzt"? Ich kenn von Matlab nur den Namen und Java nur sehr oberflächlich.

Ist aber auch egal, ob's die Sprache freiwillig hergibt oder per Assembler - bevor ich sowas mache, überleg ich mir nochmal, ob meine Klassenhierarchie stimmt. So, meine 2 Cent.
Uli Gerhardt
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#36

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 13:03
Wenns den unbedingt sein muss ...
Delphi-Quellcode:
type
  TOpa = class(TObject)
  private
    FAlter: Integer;
  public
    procedure SagWas; virtual;
    property Alter: Integer read FAlter write FAlter;
  end;

  TVater = class(TOpa)
  public
    procedure SagWas; override;
  end;

  TKind = class(TVater)
  public
    procedure SagWas; override;
  end;

  TSagWasProcedure = procedure (Self: Pointer);

procedure TOpa.SagWas;
begin
  showmessage(Format('Opa ist %d Jahre alt.', [Alter]));
end;

procedure TVater.SagWas;
begin
  showmessage(Format('Vater ist %d Jahre alt.', [Alter]));
end;

procedure TKind.SagWas;
var
  Proc: TSagWasProcedure;
begin
// showmessage(Format('Kind ist %d Jahre alt.', [Alter]));
  Proc := @TOpa.SagWas;
  Proc(Self);
end;

procedure TFTest.Button6Click(Sender: TObject);
var
  K: TKind;
begin
  K := TKind.Create;
  K.Alter := 10;
  K.SagWas;
  K.Free;
end;
gehts auch ohne Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#37

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 14:06
Zitat von sirius:
@Aphton:
Delphi-Quellcode:
procedure TKind.MeinName;
var i:Integer;
    s:string;
begin
  asm
    pushad
  end;
  s:='test';
  for i:=0 to 0 do showmessage('Damit es nicht durch Zufall doch klappt');
  asm
    popad
    call TOpa.MeinName
  end;
  ShowMessage( '(Kind:) a gugugugu' +s);
end;
Aber mach doch, wie ich schon schrieb, ein mov eax,self direkt vor den Aufruf.
Nö - was machst du, wenn die vorigen calls eax modifizieren?
Mit pusad "sichere" ich nur aus sicherheitsgründen die ganzen Register ... Man weiß ja nie, was zwischendrin so alles geschehen kann!

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#38

Re: Kind as Opa innerhalb der Deklerartion

  Alt 10. Sep 2009, 14:13
Zitat von Aphton:
Mit pusad "sichere" ich nur aus sicherheitsgründen die ganzen Register ... Man weiß ja nie, was zwischendrin so alles geschehen kann!
Ich weiß, was du beabsichtigst. Aber wenn ich in der Funktion bspw. einen String habe, werden die Register bereits verändert bevor du auch nur etwas retten kannst (nähmlich in begin). Schau dir das Compilat an.
Aber, wie gesagt, es geht mit ASM und ohne ASM, aber nicht ohne Tricksen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 02:11 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