![]() |
record mit funktion verknüpfen
Guten Tag,
ich habe eine frage... und zwar würde ich gerne, wie der titel schon sagt, ein record mit ner function "verknüpfen".. das stell ich mir ungefähr so vor: XYZ = record Name: String[255]; Prod: Produktion(); {eine vorher definierte funktion} cost: Kosten(); end; ist das möglich, und wenn ja, wie? ich möchte da später dann in etwa so drauf zugreifen: Gebaude: array of XYZ; Gebaude[1].cost(4) {also Kosten für Stufe 4 des Gebäudes, die dann über die funktion Kosten() berechnet werden sollen} schonmal danke im vorraus lg |
Re: record mit funktion verknüpfen
Verknüpft man eine Datenstruktur (Record) mit Code zur Manipulation der Daten, hat man eine Klasse. In Delphi können zwar auch record Prozeduren beinhalten, aber ich glaube, das sind noch Relikte aus der Steinzeit von Pascal und Delphi.
|
Re: record mit funktion verknüpfen
Zitat:
|
Re: record mit funktion verknüpfen
Hier gibt es ein Klasse(n) Tutorial für Delphi:
![]() |
Re: record mit funktion verknüpfen
Zitat:
Records mit Prozeduren sind viel jünger als Objekte und Klassen. Meiner Meinung nach sind sie ausserdem überflüssig und fragwürdig - die einfache Recordstruktur, die man auch mit anderen Sprachen austauschen kann (z.B. WIN-API) geht verloren, und im Endeffekt hat man doch nichts anderes als eben eine Klasse, nur dass sie Record heisst. Oder habe ich da was übersehen? Gruss Reinhard |
Re: record mit funktion verknüpfen
Genau diese Frage habe ich mir auch schon gestellt. Einfache Datenstruktur -> Record, Struktur mit Funktionalität -> Klasse, wozu ist das neuerdings vermischt worden?
|
Re: record mit funktion verknüpfen
:gruebel: Ging es nicht darum, dass der OP einen Funktionszeiger speichern will?
|
Re: record mit funktion verknüpfen
Zitat:
|
Re: record mit funktion verknüpfen
Wieso geht bitte durch Methoden die WinAPI-Kompatibilität von Records verloren? Das ist doch Blödsinn. Diese Methoden sind wie bei Klassen auch ganz normale Routinen, die einen Self-Parameter besitzen und in einem speziellen Namensraum abgelegt sind. Und ich finde das durchaus sehr nützlich. Wenn eine bestimmte Routine eindeutig einem Record zugeordnet sind, sollte ich sie auch als Methode deklarieren. Der Vorteil von Records gegenüber Klassen, nämlich der deutlich geringere Overhead (u.A. dadurch, dass Records auf dem Stack abgelegt werden können), bleibt.
Und der Threadersteller hat nicht deutlich gemacht, ob er nun eine Methode oder einen Funktionszeiger will. |
Re: record mit funktion verknüpfen
Zitat:
|
Re: record mit funktion verknüpfen
Sowohl normale Methoden als auch Klassenmethoden sind bei Records möglich. Und die Überladung von Operatoren erwarte ich ehrlich gesagt für Win32 bei Klassen nicht, denn ohne Garbage Collection ist das ziemlich kompliziert, da immer ein "Besitzer" existieren muss.
|
Re: record mit funktion verknüpfen
Deshalb ist es ja gut, das dies für records unterstützt wird
|
Re: record mit funktion verknüpfen
und dann kann man sich mit Records structuren aufbauen, welche Speicherintern ja immenoch nur ein Record sind, sich also deren Speicher sehrwohl mit anderen Sprachen austauchen läßt.
(enweder definiert sich die anderen Sprache selber soclhe Functionen zum manipulieren dessen Speichers, oder halt nicht ... ist doch egal ob, ob nicht oder ob da nur normale "einzelne" Funkktionen existieren oder halt nicht ... ist dem Speicher ja vollkommen egal) |
Re: record mit funktion verknüpfen
Zitat:
ok, danke für den Hinweis, wieder was gelernt. Trotzdem: das ist doch eine wirre Strategie. Nicht dass mich das überraschen würde. Gruss Reinhard |
Re: record mit funktion verknüpfen
@mkinzler:
du kannst du ja deine Klasse in einen Record packen :stupid: [edit] natürlich blödsin, bei vielen Operationen würde man sich schnell mal ein Speicherleck einfangen (mit Interfaces, im Record, würde es eventuell gehn) kein Wunder, daß es das nicht für Objecte gibt. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 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