Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#7

AW: [Aktuellere Delphis] Records = Klassen?

  Alt 31. Aug 2011, 18:31
Das mit dem Create-an-Pointer geht leider nicht.

Delphi-Quellcode:
type
  TTest = record
    constructor Create; // *1
    constructor Create(X: integer = 0); // *2
  end;
  PTest = ^TTest;

procedure TForm2.FormCreate(Sender: TObject);
var
  P: PTest;
  T: TTest;
begin
  P := TTest.Create(0); // *3

  T := TTest(0); // *4
  T := TTest.Create(0); // *5
end;
1: [DCC Fehler] Unit3.pas(30): E2394 Parameterlose Konstruktoren sind für Record-Typen nicht zulässig
Warum eigentlich nicht?
Einen plusieblen Grund konnte man mir noch nicht nennen.

2: [DCC Fehler] Unit3.pas(30): E2471 Möglicherweise parameterlose Konstruktoren sind in Record-Typen nicht zulässig
(ich dachte ja, man kann den austriksen )

3: [DCC Fehler] Unit1.pas(42): E2010 Inkompatible Typen: 'PTest' und 'TTest'

4: [DCC Fehler] Unit1.pas(35): E2089 Ungültige Typumwandlung
Schade, denn eigentlich sah es sehr schön aus

5: geht, so kann man sich den Record über einen Constructor vorbefüllen lassen


Im Prinzip ist "entsprichter" Constructor nur
Delphi-Quellcode:
type
  TTest = record
    class function Create(X: integer): TTest;
  end;
Was IMHO hier verständlicher wäre, als soeine "Constructor".
Die Klassenfunction kann man übrigens auch parameterlos nutzten und sie wird genauso verwendet die dieser Pseudoconstructor.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat