AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE [Aktuellere Delphis] Records = Klassen?
Thema durchsuchen
Ansicht
Themen-Optionen

[Aktuellere Delphis] Records = Klassen?

Ein Thema von Aphton · begonnen am 31. Aug 2011 · letzter Beitrag vom 31. Aug 2011
Antwort Antwort
Benutzerbild von Aphton
Aphton

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

[Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 15:44
Ich erkundige mich seit kurzem über Delphi XE 2 Starter Edition, weil ich bedenke, dieses mir zuzulegen.
[Edit] Schade, mich habense verloren: http://www.delphipraxis.net/1120577-post27.html [/Edit]

Auf einem Youtube-Video habe ich eben folgendes gesehen - ein Record hatte einen Constructor. Mir stellt sich nun die Frage, was der ganze Sinn dahinter ist. Muss/(besser)Kann man nun Speicher für Records direkt per Constructor reservieren oder was? Sollen damit Konstrukte wie diese hier...
Delphi-Quellcode:
var
  pPnt: PPoint;
begin
  New(pPnt);
  {...}
hiermit...
Delphi-Quellcode:
var
  Pnt: PPoint;
begin
  Pnt := TPoint.Create;
  {...}
umgangen werden?

Weiters frage ich mich, wie sehr Records nun Klassen ähneln. Wo sind die Unterschiede.

Wäre nett, wenn mich einer diesbezüglich aufklären könnte ^_^
Angehängte Grafiken
Dateityp: jpg Delphi XE2 Preview 2 - min 3.24.jpg (122,0 KB, 35x aufgerufen)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (31. Aug 2011 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 15:52
Wie das mit den Konstruktoren ist, weiß ich auch nicht so genau. Könnte mir vorstellen, dass sie bei der Initalisierung automatisch aufgerufen werden, aber wenn ich mich recht erinnere, hatte sich himitsu mal beschwert, dass das nicht möglich ist – also wohl eher nicht. Wahrscheinlich ist es einfach nur, damit man schreiben kann Point = TPoint.Create(3,4); (sowas habe ich bisher immer mit statischen Methoden gemacht)? Keine Ahnung... würde mich auch interessieren.

Auf jeden Fall ist der wichtigste Unterschied zwischen Klassen und Records, dass Records keine Vererbung unterstützen.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

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

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 15:53
Zitat:
Auf jeden Fall ist der wichtigste Unterschied zwischen Klassen und Records, dass Records keine Vererbung unterstützen.
Ist das wirklich der Fall bei den neuesten Versionen?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 15:53
Zitat:
Auf jeden Fall ist der wichtigste Unterschied zwischen Klassen und Records, dass Records keine Vererbung unterstützen.
Ist das wirklich der Fall bei den neuesten Versionen?
Nach meiner Information ja.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 16:05
Hallo,

Der Constructor bei Records ist eher eine Init-Methode, in der man Felder initialisieren kann.

Delphi-Quellcode:
type
  TPointEx = record
    X,Y: Integer;
    constructor Create(AX,AY: Integer);
  end;

constructor TPointEx.Create(AX,AY: Integer);
begin
  X := AX;
  Y:= AY;
end;

procedure TForm1.FormCreate(Sender: TObject);
var Pt: TPointEx;
begin
  Pt.X := 123;
  Pt.Y := 987;
  Caption := Format('X: %d, Y: %d',[Pt.X,Pt.Y]);

  Pt := TPointEx.Create(10,20);
  Caption := Caption + ' ' + Format('X: %d, Y: %d',[Pt.X,Pt.Y]);
end;
Beide Methoden funktionieren ohne Probleme.

Pt := TPointEx.Create(10,20);
ist quasi eine Alternative zu

Pt := Point(10,20);
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 16:15
Ein Konstructor in einem Record ist nichts anderes als eine (statische) Init-Funktion, nicht mehr und nicht weniger.

Außerdem ist ein Record nach wie vor ein Wertetyp und kein Referenztyp.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:54 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