Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TObject = Object ? (https://www.delphipraxis.net/60141-tobject-%3D-object.html)

Neutral General 3. Jan 2006 18:12


TObject = Object ?
 
Hi,

Ich habe grad das Object (neu)entdeckt. Wenn man Klassen so definiert:

Delphi-Quellcode:
TKlasse = Object
dann ist hat die Klasse wie records keine Eigenschaften. ABER sie kann proceduren beinhalten...
Und man hat nicht das lästige Zeug von TObject (ob lästig oder notwendig sei mal dahingestellt :mrgreen:) :)
Eigentlich die perfekte Klasse :D

So jetzt zur Hauptfrage:

Jedenfalls hatte ich dann die Theorie das TObject von Object abgleitet sein könnte. Was ich logisch finde.
Aber in der Definition steht

Delphi-Quellcode:
TObject = class
Aber wie kann das sein ?

Delphi-Quellcode:
TIrgendeineKlasse = class

 <=>

TIrgendeineKlasse = class(TObject)
:arrow:

Delphi-Quellcode:
TObject = class(TObject)
Aber das ist ein noch größerer Unsinn..

Gruß Michi

Ultimator 3. Jan 2006 18:17

Re: TObject = Object ?
 
War die Verwendung von object nicht früher beim objektorientieren TP State-of-the-Art und später dann in Delphi kam class?

Und
Delphi-Quellcode:
MyObject = class
//und
MyObjectZwo = class(TObject)
sind das Gleiche.

Neutral General 3. Jan 2006 18:18

Re: TObject = Object ?
 
Zitat:

Zitat von Ultimator
Und
Delphi-Quellcode:
MyObject = class
//und
MyObjectZwo = class(TObject)
sind das Gleiche.

Ja genau deswegen ja.

Und da
Delphi-Quellcode:
TObject = class
gilt, gilt genauso auch
Delphi-Quellcode:
TObject = class(TObject)
was aber Unsinn ist.

Der_Unwissende 3. Jan 2006 18:20

Re: TObject = Object ?
 
Hi,
Ja, kann Ultimator natürlich nur zustimmen, möchte hier aber dann auch gleich auf die Forum-Suche verweisen! Da findest du schon genügend zu Object vs. TObject.

Das eine Klasse ohne Angabe von einer speziellen Klasse immer von TObject abgeleitet wird ist natürlich einfach nur dem Compiler zu verdanken, der einfach nachschauen kann ob es eine Basisklasse gibt (sonst TObject).
Natürlich kann der auch mit der Definition von TObject umgehen ohne sich hier rekursiv einen Kreis zu bauen.

Gruß Der Unwissende

Khabarakh 3. Jan 2006 18:22

Re: TObject = Object ?
 
TObject befindet sich nicht umsonst in der Unit, in der die Hochsprache aufhört und die Compiler-Magic anfängt :zwinker: .

arbu man 3. Jan 2006 18:23

Re: TObject = Object ?
 
Tatsächlich ist TObject auch von class abgeleitet. Das ganze steht in der unit system die bei jeden Delphi Projekt dabei ist, somit ist TObject nicht von Object abgeleitet.

Delphi-Quellcode:
  TObject = class
    constructor Create;
    procedure Free;

    ...

    destructor Destroy; virtual;
  end;

Neutral General 3. Jan 2006 18:28

Re: TObject = Object ?
 
ABER: Nach euren Theorien müsste ja bei folgendem Beispiel THallo von class abgeleitet sein und nicht von TObject...

Delphi-Quellcode:
unit Unit1;

interface

// KEINE Uses.. kein TObject und nix

type
THallo = class
 Hallo: String;
 procedure SetHallo;
end;

implementation

{ THallo }

procedure THallo.SetHallo;
begin
 Hallo := 'Hallo';
 Self.Destroy; // Und alle anderen TObject Methoden sind verfügbar
end;

end.

JasonDX 3. Jan 2006 18:36

Re: TObject = Object ?
 
Moment, hier scheinen manche etwas zu verwechseln:
Delphi-Referenz durchsuchenTObject ist eine Klasse, die in Delphi deklariert wurde.
Object ist ein Schlüsselwort, das noch aus Pascal-Zeiten stammt und sowas wie ein vorreiter des class-Keywords war.
Object hat also nix mit TObject zu tun, und man kann auch nicht eine Klasse von object ableiten.
Lasst euch nicht durch die ähnliche Namensgebung drausbringen ;)
Und bezüglich TObject/class/CompilerMagic: Man kann nicht 'von class ableiten'. TObject ist eine Klasse, welche stinknormal implementiert wurde. CompilerMagic tritt ein, wenn eine Klasse (außer TObject) deklariert wird, die keine andere Klasse erbt: Dann wird nämlich automatisch TObject vererbt.


greetz
Mike

Neutral General 3. Jan 2006 18:40

Re: TObject = Object ?
 
Aber ich meine es wäre logisch wenn TObject = Object wäre und das Object hätte dann halt die ganzen Methoden verpasst bekommen und dann wurden die anderen folgenden Komponenten halt von TObject abgleitet. Was ist denn TObject sonst ?

Khabarakh 3. Jan 2006 18:47

Re: TObject = Object ?
 
Zitat:

Zitat von Neutral General
Delphi-Quellcode:
// KEINE Uses.. kein TObject und nix

System.pas wird automatisch in jede Unit eingebunden :wink: .
Zitat:

Zitat von Neutral General
Aber ich meine es wäre logisch wenn TObject = Object wäre und das Object hätte dann halt die ganzen Methoden verpasst bekommen und dann wurden die anderen folgenden Komponenten halt von TObject abgleitet.

Object und TObject haben nichts miteinander zu tun, Punkt :P :mrgreen: .
Zitat:

Was ist denn TObject sonst ?
Eine Klasse ohne Basisklasse. Da das mit der Delphi-Language schlecht möglich ist, besteht TObject eben zur Hälfte aus Assembler.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.
Seite 1 von 2  1 2      

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