![]() |
Record in Record?
Hallo,
ihr kennt das sicherlich, ihr habt ein Image und macht folgendes:
Delphi-Quellcode:
Nun hat ja das Canvas wieder eigene Eigenschaften, das heißt, dass das Canvas ein Record im Image sein muss.
Image1.Canvas...
Ich möchte nun auch ein Record erstellen, z.B. so:
Delphi-Quellcode:
Ist dies eigentlich rein Programmiertechnisch möglich, ich habe zur Zeit mein Delphi nicht und möchte aber den Algorithmus wenigstens schon schreiben!
TDVD = record
Kapitel = record Modus: Integer; Count: Integer; end; DiscName: String; end; Danke |
Re: Record in Record?
Zitat:
Es ist eine Property vom Typ einer Klasse in einer Klasse. Wie kommst du auf die Idee es könnte ein record sein? :gruebel: |
Re: Record in Record?
Delphi-Quellcode:
Das tut auf jeden Fall. Ob's direkt inline geht kann ich Dir spontan nicht sagen.
RKapitel = record
Modus: Integer; Count: Integer; end; TDVD = record Kapitel: RKapitel; DiscName: String; end; |
Re: Record in Record?
Danke Phoenix,
gerade eben kam mir auch dieser Gedankenblitz! Werde es auch so machen! Tschau |
Re: Record in Record?
Wieso, es geht auch anderst:
Delphi-Quellcode:
TMeinRecord = record
NochnRecord: record end; end; |
Re: Record in Record?
Is doch hässlich.
|
Re: Record in Record?
Zitat:
|
Re: Record in Record?
Zitat:
|
Re: Record in Record?
Tss.Tsss.Tss. Las uns nich drüber streiten: Hässlich und Nützlich. :cheers:
|
Re: Record in Record?
Ob schön oder nicht, ich würde trotzdem mal vorschlagen mal anzudenken, ob ne Klsse nicht sinnvoller wäre. Ich kenn zwar dein konkretes Problem nicht, aber ich merk selbst gerade, dass OOP eigentlich ganz praktisch is. :-D
mfg Christian |
Re: Record in Record?
Nur weil man Records verwendet heisst es nicht das man nicht OOP Programmiert( Besonderst seit .net nicht ).
Aber dazu gab es einen Riesen Thread, also such mal im Forum! P.s.: Records sind IMHO zur Strukturierung des Programms da! |
Re: Record in Record?
Zitat:
Und das sind definitiv Klassen! |
Re: Record in Record?
Zitat:
Mir fällt da gerade absolut nix ein, was mit Reference types (Klassen/Interfaces) nicht flexibler, einfacher und eleganter wäre... :gruebel: Würde mich echt interessieren. |
Re: Record in Record?
Delphi-Quellcode:
Warum sollte ich das in Klassen stecken??
TVertex = Record
Points: array[0..2] of record x,y,z: double; end; sPoints: array[0..2] of record x,y: single; end; end; |
Re: Record in Record?
Zitat:
mfg Christian |
Re: Record in Record?
Füge noch hinzu:
Ausserdem muss man diese Daten dann auch noch Initialisieren, das wäre unnötige Arbeit! |
Re: Record in Record?
Wenn du statt records Klassen nimmst, musst du deine Felder initialisieren? :shock: Das wär das erste was ich höre. Ein simples .Create() reicht.. Von Initialisieren seh ich da nix :gruebel:
|
Re: Record in Record?
Zitat:
|
Re: Record in Record?
.Create ist instanziieren, Speedy ;) Initialisieren wäre sowas wie
Delphi-Quellcode:
Self.x := 0;
Self.y := 0; Self.z := 0; .... |
Re: Record in Record?
Das hier war wohl etwas großzügig ausgeholt...
Zitat:
Zitat:
Das da würde für alles eine eigene Funktion benötigen. Jeweils ein für 2d und eine für 2d) benötigen Außerdem müsstest du ihnen ständig deinen Record als Parameter übergeben. Eine Klasse könnte Methoden anbieten, du könntest einen 2-dimensionalen Punkt ableiten und eine weitere Dimension hinzufügen, ... Sorry, aber ich hoffte eigentlich gerade ein Beispiel zu bekommen, das mir zeigt wo Records eine bessere Struktur ermöglichen. Ich sehe absolut nichts was dadurch vereinfacht werden könnte... :gruebel: Interessant wird jetzt ein anderer Aspekt... Um zu verhindern, dass das Ding da oben ständig kopiert wird müsstest du einen PVertex verwenden. Der wiederum braucht einen TVertex auf den er zeigen kann. Genau da denke ich mir doch, dass ein Constructor oder eine Factory so schön einfach sind. :zwinker: |
Re: Record in Record?
Es Spricht nichts dagegen den record in eine Klasse zu packen und ihn mit einer Funktion der Klasse aufzurufen, aber ich erkenne das ich dich Klassenfanatiker nicht überzeugen kann.
P.s.: Mein Vater steht hinter mir und schüttelt den Kopf über dich( Programmiert 25 Jahre ) |
Re: Record in Record?
Zitat:
Delphi-Quellcode:
Da wird AFAIR keine Kopie angelegt. Wieso muss es immer sofort ein Zeiger sein? :roll: Ich persönlich verwende Records nur, wenn ich etwas abspeichern möchte, welches ich mir aus anderen Variablen zusammenbastle und danach wieder freigebe, und mir die Zeit fehlt, entsprechende Methoden zu schreiben. Highscores z.B. lassen sich gut als Record speichern.
procedure TueEtwas(var rec: TVertex); //bzw.
procedure TueEtwas(const rec: TVertex); |
Re: Record in Record?
Ich versteh Dich ja, aber eigentlich hat man doch immer irgendwelche Funktionen, die mit den Daten des/der Records arbeiten. Sonst bräuchte man ja keine Records. Wenn man es richtig machen will, sollte man immer eine Klasse nehmen, aber wer jat schon immer die Zeit, Alles richtig zu machen. Wenn ich mal eben was runterfrickeln muss, dann rutscht mir auch manchmal ein 'record' in den Code, was solls.
Aber rein softwaretechnisch spricht nichts für die Verwendung von Records. |
Re: Record in Record?
da will ich nu auch mal meinen senf dazugeben :)
es gibt nich nur records und classes, sondern auch noch die guten alten objects (wenn hier wer mit TP erfahrung dabei iss, der wird sie auch noch kennen) DIESE objects benötigen auch keine "initialisierung" wie klassen :) sie sind ja schon quasi instanziiert :)
Delphi-Quellcode:
type
TFoo = object Blah: string; Fasl: integer; end; var xFoo: TFoo; begin xFoo.Blah := 'barf00s'; xFoo.Fasl := 1337; end; |
Re: Record in Record?
Zitat:
|
Re: Record in Record?
Muesst ihr euch denn immer den OOP-Fanatismus bzw. die Abneigung zu OOP um die Ohren hauen? Lasst doch jeden alles so programmieren, wie er es will. Das Problem wurde geklaert, und es wurde vorgeschlagen, es evtl. mit einer Klasse zu realisieren. Das ist kein Grund, sich wiedermal den Sinn bzw. Unsinn von Klassen und Records um die Ohren zu hauen :roll:
Also, kommt bitte wieder zum Thema zurueck. Falls jemand noch einen sinnvollen Tipp hat, kann er ihn gerne abgeben, aber bitte seht die Diskussion zu Records, Klassen, und objects als beendet an. Diese koennt ihr ja in einem neuen Thread austragen. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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