![]() |
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:
und dem
type
TAuto = record Alter: Integer; Marke: (Audi,Opel,Mercedes,Ferrari,BMW,Porsche); end;
Delphi-Quellcode:
:spin:
type
TAuto = class Alter: Integer; Marke: (Audi,Opel,Mercedes,Ferrari,BMW,Porsche); end; //edit: delphi win32 bzw. Was hat das für Auswirkungen auf das Programm, wenn ich einmal das eine, und einmal das andere nehme. |
Re: Unterschiede bei Type
:wiejetzt:
Das Eine ist ein Record und das Andere eine Klasse. Verstehe die Frage wohl nicht... |
Re: Unterschiede bei Type
Zitat:
Daher hab ich nicht geantwortet. :?: |
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". |
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?
|
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. |
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:
Klasse:
Auto: TAuto;
... Auto.Geschwindigkeit := 80; ...
Delphi-Quellcode:
Auto: TAuto;
... Auto := TAuto.Create; Auto.GebeGas; ... |
Re: Unterschiede bei Type
Hallo,
und Auto.Free bei Klassen-Verwendung nach der Benutzung. Heiko |
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