![]() |
gibt es Class Procedures in Records?
ja ja, ich schonwieder :oops:
Gibt es irgendeates ähnliches wie die KlassenProzeduren auch für Records? etwa so:
Delphi-Quellcode:
Es soll eine Function entstechen, welche wie der Konstructer bei Klassen aussieht
TMyRecord = packed Record
Obj: TMyObject; Class Function Create: TMyRecord; End; Class Function TMyRecord.Create: TMyRecord; Begin Result.Obj := TMyObject.Create; End; und intern einen Record erstellt. Hab hier ein Objekt (unterschiedliche Objecte) in einem Record "versteckt" und wollte dafür auch einige Create-Funktionen direct in dem Record anlegen. Aktuell geht es zwar auch ohne sowas, aber es wäre schon hübscher, wenn es ginge :) im Prinzip soetwas wie z.B. bei Implicit/Explicit, nur ohne übergebene Parameter:
Code:
TMyRecord = [color=#0000af][b]packed Record[/b][/color]
[color=#0000af][b]Class Operator[/b][/color] Implicit[color=#808080](x: irgendwas)[/color]: TMyRecord ; [color=#0000af][b]Class Operator[/b][/color] Explicit[color=#808080](x: irgendwas)[/color]: TMyRecord ; in Liebe dat himilein :angel: , oder so |
Re: gibt es Class Procedures in Records?
In neueren Delphi Version ( m.W. ab D2006) ja.
|
Re: gibt es Class Procedures in Records?
In D2009 wird bei Class (vor Functionen ... siehe erster Code) gemeckert :cry:
Zitat:
[add] das mit dem Free funktioniert natürlich (ist schließlich auch nix Außergewöhnliches), aber etwas für Create konnt ich nicht finden
Delphi-Quellcode:
dank der Operatoren geht sowas zumindestens, aber es wäre natürlich etwas Tolles, wenn es auch über den TMyRecord ginge :angel2:
Type TMyRecord = Record
Obj: TObject; Function Create: TMyRecord; Procedure Free; End; Function TMyRecord.Create: TMyRecord; Begin Result.Obj := TObject.Create; End; Procedure TMyRecord.Free; Begin Obj.Free; Obj := nil; End; Procedure TForm1.FormCreate(Sender: TObject); Var R: TMyRecord; Begin R := TMyRecord.Create; R.Free; End;
Delphi-Quellcode:
schon schlim, dieser Perfektionist in mir :?
Procedure TForm1.FormCreate(Sender: TObject);
Var R: TMyRecord; Begin R := TObject.Create; R.Free; End; |
Re: gibt es Class Procedures in Records?
Delphi-Quellcode:
sollte funktionieren.
TMyRecord = packed Record
Obj: TMyObject; Class Function Create: TMyRecord; static; End; |
Re: gibt es Class Procedures in Records?
ich probierst mal
[info] hatte oben noch was nacheditiert
Delphi-Quellcode:
Type TMyRecord = Record
Obj: TObject; Function Create: TMyRecord; Static; <<<<<< Procedure Free; End; Zitat:
|
Re: gibt es Class Procedures in Records?
hab die OH mal nach "static" durchsucht....
Zitat:
Delphi-Quellcode:
Static ist hier 'nen Syntaxfehler
Type TMyRecord = Record
Obj: TObject; Static Function Create: TMyRecord; Procedure Free; End; |
Re: gibt es Class Procedures in Records?
Kompilliert zumindes mal:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TMyObject = class end; PMyRecord = ^TMyRecord; TMyRecord = packed Record Obj: TMyObject; Class Function Create: PMyRecord; static; End; var Form1: TForm1; Test: PMyRecord; implementation {$R *.dfm} class function TMyRecord.Create: PMyRecord; var p: PMyRecord; begin New(p); result := p; end; procedure TForm1.FormCreate(Sender: TObject); begin Test := TMyRecord.Create; end; end. |
Re: gibt es Class Procedures in Records?
ja hab's grad mitbekommen ... es geht :firejump:
hatte vorhin beim Test das Class vergessen :wall:
Delphi-Quellcode:
Class Function Create: TMyRecord; Static;
ich glaub ich verlieb mich langsam in diese neuen Record-Funktionalitäten :love: [add] ach ja .... Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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