Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erklärung von record (Delphihilfe unverständlich :)) (https://www.delphipraxis.net/80023-erklaerung-von-record-delphihilfe-unverstaendlich.html)

mkinzler 1. Nov 2006 19:45

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Zitat:

Da hat er sich vertan. Das ist ein Variant-Typ.
Wie alzaimar geschrieben hat, ist das das Selbe in einer anderen Sprache ( Union = varianter record; Struktur = Record, ...)

Hansa 1. Nov 2006 19:50

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Die Frage steht aber bei Delphi-language und da ist das ein Variant. Guckt mal lieber noch nach meinem Edit oben, ob das unter Delphi wirklich noch so ist. :???:

mkinzler 1. Nov 2006 19:53

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Das mit dem Speicherverbrauch ist m.w. bei c genauso.

Muetze1 1. Nov 2006 19:59

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Zitat:

Zitat von Hansa
[Edit] mir fällt gerade noch ein : der Variant braucht pro Einheit immer soviel Platz, wie das größte Element. Krasses Beispiel : der Variant besteht nur aus einem integer oder alternativ einem TImage von 5 MB. Der integer würde dann 5 MB belegen !! :cyclops:

TImage? Wäre eine Klasse, somit würde es eine Instanzenvariable sein und das wäre wiederrum ein Pointer (intern) und somit auch 4 Byte gross...

w.z.b.w. *g*

3_of_8 1. Nov 2006 20:23

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Zitat:

Zitat von alzaimar
Zitat:

Zitat von 3_of_8
Das ist schon ein recht fortschrittliches Sprachfeature.

Nicht ganz. Es ist so alt wie Pascal selbst. Und damit bald 40 Jahre ...

Ich meinte nicht "fortschrittlich" sondern "fortgeschritten". Gehört jedenfalls nicht ganz zu den Grundlagen von Delphi, IMHO.

Hansa 1. Nov 2006 20:50

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Zitat:

Zitat von 3_of_8
sondern "fortgeschritten". Gehört jedenfalls nicht ganz zu den Grundlagen von Delphi, IMHO.

Doch, doch. Das gehört schon zu den Delphi Ursprüngen. Alzaimar hat das doch gesagt. Genauer gesagt stammt das aus 1972 von der Ur-Pascal Definition von Nikolaus Wirth. Was ist nun daran fortgeschritten ? :zwinker: Im Zusammenhang mit Records, wohl gemerkt. Es geht nicht um den Datentyp Variant ! Es geht um eine alte Spielart von Records. Die nennt man Varianten, aber das Wort taucht in der Deklaration dieser Records im SOurce gar nicht auf. Die Delphi-Hilfe könnte das aber schon liefern.

@Muetze1 : Du behauptest also ernsthaft, ein beliebiges TImage würde nur 4 Byte brauchen ? :shock: Erkläre mal, was 10 TImages in verketteter Liste brauchen, wobei jedes 1 MB hat und die sollen abgespeichert werden. Das mußt Du mir mal vormachen mit 40 Bytes für 10 TImages. :mrgreen:

mkinzler 1. Nov 2006 20:52

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Zitat:

@Muetze1 : Du behauptest also ernsthaft, ein beliebiges TImage würde nur 4 Byte brauchen ? Shocked Erkläre mal, was 10 TImages in verketteter Liste brauchen, wobei jedes 1 MB hat und die sollen abgespeichert werden. Das mußt Du mir mal vormachen mit 40 Bytes für 10 TImages. Mr. Green
Das Image selber belegt natürlich mehr Speicher, die Referenz im (varianten) Record aber nur 4 Bytes.

Cöster 1. Nov 2006 22:56

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Was bedeutet eigentlich
Delphi-Quellcode:
case Integer of
wie es zum Beispiel in der Deklaration von TRect steht?

3_of_8 1. Nov 2006 23:06

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Dass es nicht von einem Ordinaltyp im Record, sondern von der Art des Aufrufs abhängig ist.

Beispiel:
Delphi-Quellcode:
type
  TARGB=record
  case Integer of
  0: (Value: Integer);
  1: (A, R, G, B: Byte);
  end;

//...

myARGB.Value:=$000000FF;
//...ist das gleiche wie...
myARGB.R:=255;
Achja: Mit "Keine Grundlage" meinte ich, dass man es als Anfänger nicht unbedingt wissen muss, sondern dass es eher etwas für Fortgeschrittene ist.

Cöster 1. Nov 2006 23:23

Re: Erklärung von record (Delphihilfe unverständlich :))
 
Aha. Hat das einen Grund, warum es
Delphi-Quellcode:
case Integer of
  0: { ... } 
  1: { ... }
heißt und nicht
Delphi-Quellcode:
case Boolean of
  True : { ... }
  False: { ... }
oder vielleicht auch Byte heißt, oder ist das einfach nur Zufall?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Seite 2 von 4     12 34      

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