Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unterschiede bei Type (https://www.delphipraxis.net/116585-unterschiede-bei-type.html)

vsilverlord 2. Jul 2008 15:51


Unterschiede bei Type
 
Guten Tag,
Ich würde gerne wissen was der Unterschied zischen den Typen ist, also eigendefinierten Typen. Was ist z.b der Unterschied zwischen:
Delphi-Quellcode:
type
  TAuto = record
   Alter: Integer;
   Marke: (Audi,Opel,Mercedes,Ferrari,BMW,Porsche);
  end;
und dem
Delphi-Quellcode:
type
  TAuto = class
   Alter: Integer;
   Marke: (Audi,Opel,Mercedes,Ferrari,BMW,Porsche);
  end;
:spin:
//edit: delphi win32
bzw. Was hat das für Auswirkungen auf das Programm, wenn ich einmal das eine, und einmal das andere nehme.

spaxxn 2. Jul 2008 15:58

Re: Unterschiede bei Type
 
:wiejetzt:

Das Eine ist ein Record und das Andere eine Klasse.

Verstehe die Frage wohl nicht...

RavenIV 2. Jul 2008 15:59

Re: Unterschiede bei Type
 
Zitat:

Zitat von spaxxn
:wiejetzt:

Das Eine ist ein Record und das Andere eine Klasse.

Verstehe die Frage wohl nicht...

So ging's mir auch.
Daher hab ich nicht geantwortet. :?:

NormanNG 2. Jul 2008 16:35

Re: Unterschiede bei Type
 
Hi vsilverlord,

ich versuche mal eine ganz einfache (und auch oberflächliche) Erklärung :mrgreen:

Ein Record ist wie eine "Kiste", in der du deine Daten aufheben kannst.
Um mit diesen Daten dann zu Arbeiten, wird zusätzlicher Programmcode benötigt.

Eine Klasse dagegen ist ein "Record mit Leben", kann also einerseits Daten enthalten,
andererseits aber auch Programmcode, der mit diesen Daten "arbeitet".

vsilverlord 2. Jul 2008 17:18

Re: Unterschiede bei Type
 
ohja danke. Ich dachte das gäbe es irgendwelche gravierenden Unterschiede, also habe ich das richtig verstanden, dass eine Klasse das gleiche kann wie ein record, bloß noch viel mehr?

dominikkv 2. Jul 2008 17:39

Re: Unterschiede bei Type
 
es gibt aber auch Unterschiede ...
zB wird ein Record auf dem Stack angelegt, eine Klasse nach dem .Create auf dem Heap und ein Zeiger auf dem Stack. Bei einer Klasse musst du dich selbst um das Speicherreservieren + freigeben kümmern, bei einem Record macht das der Compiler für dich. Eine Klasse kann Methoden und Properties haben, ein Record nicht (ok, in neueren Delphiversionen schon...).

Sinn und Zweck: In einem Record kannst du Daten speichern, es werden einfach nur Variablen sinnvoll zusammengefasst. Eine Klasse ist intelligent, zB merkt sie wenn man "ihre Variablen" ändert und kann entsprechend reagieren (zB prüfen ob man verändern darf, ob der Wert im richtigen Bereich liegt, nach dem Ändern auf Festplatte speichern etc...) oder aber du kannst ihr Befehle geben wie zB bei einem Edit .Clear. Eine Klasse verwaltet sich einfach selber.

mkinzler 2. Jul 2008 17:43

Re: Unterschiede bei Type
 
Jein. Natürlich kann man statt eines Records eine Klasse verwenden. Man muss dann halt eine Instanz erzeugen.

Record:

Delphi-Quellcode:
Auto: TAuto;
...
Auto.Geschwindigkeit := 80;
...
Klasse:
Delphi-Quellcode:
Auto: TAuto;
...
Auto := TAuto.Create;
Auto.GebeGas;
...

hoika 2. Jul 2008 18:54

Re: Unterschiede bei Type
 
Hallo,

und Auto.Free bei Klassen-Verwendung nach der Benutzung.


Heiko

DeddyH 2. Jul 2008 18:55

Re: Unterschiede bei Type
 
Und den ganzen Schmonses noch in einen try-finally-Block.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz