Autor Beitrag
DaRobbie
Hält's aus hier
Beiträge: 6

Win:XP, Me, 98, 95 Linux:9.1

BeitragVerfasst: Fr 13.01.06 19:08 
moin ich hab mir nen record gebastelt.
ausblenden Der Record
1:
2:
3:
4:
5:
6:
7:
8:
type
karte = record { Eigenschaften einer Karte }
  msg:string; { Auszugebende Nachricht }
  todo:procedure; { Prozedur was zu tun ist }
end;

var
karten : array[0..14] of karte; { Die Karten }


Wie kann ich die todo-Prozedur definieren? z.b in einer anderen Prozedur?

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 13.01.06 19:17 
das ist nur ein Pointer auf eine Prozedure in etwa so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type TKarte = packed record
  msg: String[20];
  todo: procedure;
  end;

procedure bla;
begin
  MessageBox(0,'elele',nil,0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var karte : TKarte;
begin
  karte.msg := 'hallo';
  karte.todo := bla;  //procedure setzen

  karte.todo;  //procedure aufrufen
end;

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
DaRobbie Threadstarter
Hält's aus hier
Beiträge: 6

Win:XP, Me, 98, 95 Linux:9.1

BeitragVerfasst: Sa 14.01.06 01:20 
gibt es nicht ne möglicket wo ich sagen kann:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
todo:=var a:integer;
begin
  algorithmus
end;

oder muss ich die prozedur vorher explizit definieren?
aber danke schonmal

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 14.01.06 16:45 
Ja, aber nicht mit Records.

Was du sicherlich haben willst ist Object, würd ich Dir aber DEFINITIV ABRATEN, da obsoleted und beschissen zu programmieren. Wass Du machen könntest, wäre ne Class mit deiner Procedure drin. Du musst dich dann zwar um die Instantiierung der Klasse kümmern, aber das ist nicht allzu schwer ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
DaRobbie Threadstarter
Hält's aus hier
Beiträge: 6

Win:XP, Me, 98, 95 Linux:9.1

BeitragVerfasst: So 15.01.06 03:42 
das mit den klassen ist ne coole idee, doch wie würde dsa gehen???
hab grad mal 11. klasse und progge an monopoly...

mein info-lehrer hat auch keinen plan.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 15.01.06 13:58 
Könnte z.B. so hier aussehen:

ausblenden volle Höhe Der Record
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
type
    Tkarte = class { Klasse deklarieren }
    private
    FMsg:string; { Feld zur Speicherung der auszugebenden Nachricht }
    public
        constructor Create; virtual; reintroduce; //Dinge, die während des Erzeugens zu erledigen sind
        destructor Destroy; override; //Dinge zum Freigeben des Speichers

        procedure todo; { Prozedur was zu tun ist }

        property Msg: String read FMsg write FMsg; //Zugriff auf diese Nachricht auch für andere Units ermöglichenermöglichen.
    end;

{...}

implementation

{...}

constructor TKarte.Create;
begin
    inherited; //WICHTIG!!!

    //Weitere zu erledigende Dinge ...
end;

constructor TKarte.Create;
begin
    //Zu erledigende Dinge ...

    inherited; //WICHTIG!!!
end;

procedure TKarte.Todo;
begin
    //Dein Source!
end;

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
pRoTeUs
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 47

Windows XP prof
Delphi 2005 prof
BeitragVerfasst: So 15.01.06 14:36 
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
constructor TKarte.Create;
begin
    inherited; //WICHTIG!!!
    //Weitere zu erledigende Dinge ...
end;

constructor TKarte.Create;
begin
    //Zu erledigende Dinge ...
    inherited; //WICHTIG!!!
end;


Der zweite Constructor sollte doch eher ein Destructor sein.

mfg proteus
DaRobbie Threadstarter
Hält's aus hier
Beiträge: 6

Win:XP, Me, 98, 95 Linux:9.1

BeitragVerfasst: Mo 16.01.06 15:50 
danke schön

ich werde das ganze dann gleich nochmal probieren.
bei fragen komme ich sicherlich auf euch zurück!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.01.06 15:57 
Warum missbrauchst du dafür einen Record? Eine Klasse ist doch für so was gedacht?