Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Records Proceduren Methoden (https://www.delphipraxis.net/207798-records-proceduren-methoden.html)

epm5 4. Mai 2021 11:14

Records Proceduren Methoden
 
Hallo,

beim Versuch einer Recordkonstanten eine feste Methode zuzuweisen, erhalte ich die Fehlermeldung: Konstantenausdruck erwartet


Was mache ich da falsch?
Der Versuch eine Prozedur zuzuweisen geht ohne Probleme


program Project1b;

uses
Forms,
MyRec in 'MyRec.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

// #####################

unit MyRec;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure doit;
end;

var
Form1: TForm1;

procedure Test;

implementation

{$R *.dfm}

type
TRec = record
s: string;
p: procedure;
m: procedure of object;
end;

Const
// Rec: TRec = (s: 'u'; p: Test); // wird compiliert
Rec: TRec = (s: 'u'; p: Test; m: Form1.doit); // FEHLER: Konstantenausdruck erwartet !?

procedure Test;
begin
showmessage('Test');
end;

procedure TForm1.doit;
begin
Rec.p;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rec.p;
showmessage(Rec.s);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
doit;
end;

end.

himitsu 4. Mai 2021 21:07

AW: Records Proceduren Methoden
 
Form1 ist eine Variable :zwinker:
Außerdem ist sie zu diesem Zeitpunkt eh leer, weil keine Form-Instanz drin. (falls es doch funktioniert hätte)

TForm1.doit, wenn es eine "class procedure" (für M) oder "class procedure; static" (für P) ist.



Und bitte [DELPHI]dein code[/DELPHI] drumrum.

sariayers 30. Jun 2021 08:51

AW: Records Proceduren Methoden
 
Hallo Ja, das habe ich auch gemacht. vielen dank für deine antwort.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr.

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