AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Vorteile eines Records gegenüber einer eigenen Klasse?
Thema durchsuchen
Ansicht
Themen-Optionen

Vorteile eines Records gegenüber einer eigenen Klasse?

Ein Thema von malo · begonnen am 2. Feb 2005 · letzter Beitrag vom 4. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:32
Welche Vorteile haben Records eigentlich gegenüber Klassen? Man kann doch mit einer Klasse genauso umgehen, wie mit einem Record, nur, dass Klassen vielseitiger sind, oder? Oder sehe ich das irgendwie falsch? Verbrauchen Klassen vielleicht mehr Speicher oder so als Redcords? Ich find nämlich die Records ziemlich unsinnig, da man eine Klasse ja auch wie ein Record behandeln kann
  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
 
#2

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:34
Ich denke mal ein Record verbraucht nicht so viel Speicher weil eine Klasse ja noch das ganze TObject Gerümpel hat was man nicht immer braucht...

Wenn ich jetzt Quatsch rede sagt es mir bitte
Michael
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#3

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:37
Einen Record kann man statisch instantiieren, eine Klasse nicht.

Deshalb benutzt man Records meist, um Verbunddatentypen zu erstellen.
  Mit Zitat antworten Zitat
Fourcorner

Registriert seit: 26. Aug 2004
Ort: Grenzach-Wyhlen
51 Beiträge
 
Delphi 7 Personal
 
#4

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:39
Hallo

Zitat:
Welche Vorteile haben Records eigentlich gegenüber Klassen?
Ein Record ist nur ein Speicherplatz im Speicher. Eine Klasse hingegen kann neben den Record auch Funktionen und Proceduren aufnehmen. Zudem können Klassen von anderen Klassen abgeleitet werden.

Zitat:
Ich find nämlich die Records ziemlich unsinnig, da man eine Klasse ja auch wie ein Record behandeln kann
Nicht ganz. Probiere mal folgenden Record in ein Klasse umzuschreiben:

Delphi-Quellcode:
var Verein: Array of record
  Bez: String;
  LSV: String;
  Land: String;
  Meldung: Array of record
    Name: String;
    Jahrgang: String;
    Geschlecht: String;
    Start: Array of record
      WKN: integer;
      MZeit: String;
    end;
  end;
  MeldungSt: Array of record
    Name: String;
    Start: Array of record
      WKN: integer;
      MZeit: String;
    end;
  end;
  Namenliste: Array of record
    Name: String;
    Jahrgang: String;
    Geschlecht: String;
  end;
end;
Du siehts, der Vorteil an einem Record ist, dass er nochmals "unterteilt" werden kann. Eine Klasse kann natürlich auch einen Record enthalten, jedoch ist die, wenn man nur Daten speichern will, umsonst.
Julian
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:40
erstens wie schon gesagt ist dann unsinniges zeug das man nicht brauch mit in einer klasse.
Ausserdem wäre es ziemlich doof wenn man einer funktionen einen rekord(in diesem fall klasse) übergeben müsste den man vorher erst kreieren/zerstören muss....gibts zwar auch, aber egal
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:43
Ein Record ist passiv, hat also nur Daten und keine Methoden.
Will man nur die Daten verarbeiten so ist es naterlich viel effizienter Records zu nehmen.
Ein Grossteil der Daten wird ja nur herumgeschubst.

Manche Sprache wie Smalltalk ist extrem indem jedes Datenelement ein Objekt ist.
1 + 2 ist also 1.PlusMethode(2).
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 13:45
Zitat von Pseudemys Nelsoni:
Ausserdem wäre es ziemlich doof wenn man einer funktionen einen rekord(in diesem fall klasse) übergeben müsste den man vorher erst kreieren/zerstören muss....gibts zwar auch, aber egal
Warum?
Mit Klassen ist doch eine viel schönere Kapselung der Funktionalität möglich. Die Funktionen sind dann dort, wo sie hingehören. Ich verwende Records großteils dazu, um Daten zwischen Verschiedenen Klassen auszutauschen.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 14:35
Records gab es schon in Turbo Pascal 3.0
Damals war Pascal noch nicht objektorientiert.

Das änderte sich erst mit der Version Turbo Pascal 5.5
Der Unterschied zwischen TP5 und 5.5 waren eigentlich nur eine Hand voll Schlüsselwörter.
Eines davon war "object"

Trotzdem haben Records noch ihre Daseinsberechtigung.
Es gibt viele Dinge die mit einem Record einfach zu erledigen sind.

Aber auch komplexe Aufgeben wie Delphi-Referenz durchsuchenVariante Teile in Records lassen leicht darstellen:
Delphi-Quellcode:
type
  TPerson = record
  FirstName, LastName: string[40];
  BirthDate: TDate;
  case Citizen: Boolean of
    True: (Birthplace: string[40]);
    False: (Country: string[20];
            EntryPort: string[20];
            EntryDate, ExitDate: TDate);
  end;
oder wenn man wissen will, wie z.B. ein Extended intern im Speicher abgelegt ist, kann man das einfach erledigen:
Delphi-Quellcode:
...
type
  myReal = record
             case Boolean of
               True: (Zahl: Extended); // Extended belegt intern 10 Bytes
               False: (Speicher: array[0..9] of Byte);
            end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  r: myReal;
  i: Integer;
  s: string;
begin
  // Zahl zuweisen
  r.Zahl := 7.5;

  // Speicher, der von Zahl belegt wird hexadezimal ausgeben
  s := '';
  for i := 0 to 9 do
  begin
    s := s + IntToHex(r.Speicher[i], 2) + ' ';
  end;
  Label1.Caption := s;
end;
...
Delphi 7 Hilfe
...Wie bereits erwähnt, erfüllen variante Teile noch eine zweite Aufgabe. Sie können dieselben Daten so behandeln, als würden sie zu unterschiedlichen Typen gehören. Dies gilt auch in den Fällen, in denen der Compiler eine Typumwandlung nicht zulässt. Wenn beispielsweise das erste Feld einer Variante einen 64-Bit-Real-Typ und das erste Feld einer anderen Variante einen 32-Bit-Integer-Wert enthält, können Sie dem Real-Feld einen Wert zuweisen und anschließend die ersten 32 Bits als Integer-Wert verwenden (indem Sie sie beispielsweise an eine Funktion übergeben, die einen Integer-Parameter erwartet).


Records können ja auch Objekte enthalten:
Delphi-Quellcode:
...
type
  TFormRec = record
    MainForm: TForm1;
    ClientForm: TForm1;
    blabla: string;
  end;

var
  FormRec: TFormRec;
...
procedure TForm1.Button3Click(Sender: TObject);
begin
  FormRec.MainForm := TForm1.Create(Application);
  FormRec.ClientForm := TForm1.Create(Application);
  FormRec.MainForm.Color := clRed;
  FormRec.ClientForm.Color := clBlue;
  FormRec.MainForm.Show;
  FormRec.ClientForm.Show
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 14:54
Klar, bei manchen Sachen machen variante Teile in Records Sinn, in manchen Fällen wäre das mit polymorphen Objekten weit einfacher zu regeln. Ein gutes Beispiel sei hierfür das ganze NMHDR-Gedöns, wo man einen Record-Zeiger in 10 verschiedene erweiterte Records casten darf...
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Vorteile eines Records gegenüber einer eigenen Klasse?

  Alt 2. Feb 2005, 15:13
Records sollte man verwenden, wenn es darum geht, schon strukturierte Daten zu speichern (z.B. Adressdaten). Da braucht man dann auch keine Klassen. Klassen sind aber dann nützlich, wenn man für die Daten bestimmte Funktionen/ Prozeduren braucht, die immer wieder auf diese Daten zugreifen. Da sind Klassen sinnvoller als Records.

MfG
Binärbaum

//Edit: immer diese Rechtschreibfehler
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:24 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