Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur in Typendeklaration (https://www.delphipraxis.net/11343-prozedur-typendeklaration.html)

Niels 4. Nov 2003 19:26


Prozedur in Typendeklaration
 
Ich möchte für nen selbstdefinierten Typ gewisse Funktionen festlegen. Ich weiß aber nicht wie ich die Prozedur oder Funtion definieren soll.

Ich hab mal folgendes gemacht:

Delphi-Quellcode:
type
  dNode = ^pNode;
  pNode = record
    dat: integer;
    next: dNode;
    new: procedure (var node: dNode);
  end;
Dazu hab ich noch die Prozedur new, in der dann einfach steht new(node);
Ich hab den Befehl new jetzt nur genommen um ein einfaches Beispiel zu bringen, da kommen dann natürlich andere hin.

Das Problem hierbei wäre nur, dass ich ja schreiben muss x.new(x);
...was eigentlich relativ sinnlos ist. Ich will nur schreiben x.new;
Ist das irgendwie möglich?

MfG Niels

neolithos 4. Nov 2003 19:41

Re: Prozedur in Typendeklaration
 
Nein,

aber man könnte ja auch ne Klasse verwenden! Oder?

Christian Seehase 4. Nov 2003 19:41

Re: Prozedur in Typendeklaration
 
Moin Niels,

ja, ist möglich.
Nur kannst Du dann keinen Record nehmen, sondern musst Dir eine neue Klasse (class) erstellen.
Hier kannst Du Daten und Methoden mischen.

Niels 4. Nov 2003 19:54

Re: Prozedur in Typendeklaration
 
Wenn ich ne Klasse nehm, dann hab ich aber auch diese ganzen Standard-Funktionen und Eigenschaften drin. Kann ich das irgendwie rausschmeisen?

MfG Niels

SirThornberry 4. Nov 2003 20:00

Re: Prozedur in Typendeklaration
 
es geht maximal
Delphi-Quellcode:
type
  dNode = ^pNode;
  pNode = record
    dat: integer;
    next: dNode;
    new: TNotifyEvent;
  end;
wobei du für TNotifyEvent dann auch andere Proceduretypen oder wie sich das nennt einsetzen kannst
bsp.:
Delphi-Quellcode:
type
  TMyEvent = procedure(var node: dNode) of Object;
  dNode = ^pNode;
  pNode = record
    dat: integer;
    next: dNode;
    new: TMyEvent;
  end;
und schon hast du das was du wolltest....

Christian Seehase 4. Nov 2003 20:00

Re: Prozedur in Typendeklaration
 
Moin Niels,

Du könntest es dann noch so machen:

Delphi-Quellcode:
type
  dNode = ^pNode;
  TMyProc = procedure(var node: dNode);
  pNode = record
    dat: integer;
    next: dNode;
    new: TMyProc;
  end;
Dann müsstest Du nur bei jedem Satz den Du verwendest noch die Adresse einer entsprechenden Prozedure zuweisen.

Niels 4. Nov 2003 20:09

Re: Prozedur in Typendeklaration
 
Ich versteh nicht wirklich wo jetzt der Unterschied zwischen dem was ich und dem was ihr geschrieben habt.

Außerdem passiert folgendes:
wenn ich dann die Prozedur neu schreib sagt er mir Identifier redeclared.
Wo soll ich die Prozedur dann hinschreiben, dass es funzt?

Christian Seehase 4. Nov 2003 20:21

Re: Prozedur in Typendeklaration
 
Moin Niels,

Zitat:

Zitat von Niels
Wo soll ich die Prozedur dann hinschreiben, dass es funzt?

wie hast Du es denn gemacht.
Geht bei mir problemlos.

Niels 4. Nov 2003 20:22

Re: Prozedur in Typendeklaration
 
ich hab deins ins interface geschrieben und den Inhalt der Prozedur in den implementation-Teil

SirThornberry 4. Nov 2003 20:26

Re: Prozedur in Typendeklaration
 
Delphi-Quellcode:
type
  TMyEvent = procedure(var node: dNode) of Object;
  dNode = ^pNode;
  pNode = record
    dat: integer;
    next: dNode;
    new: TMyEvent;
  end;

  TForm1 = class(TForm)
  [...]
  private
    procedure test11(var node: dNode);
  end;
  [...]


procedure TForm1.irgendwas...
var test: pNode;
begin
 test.new := test11;
 test.new(wasweißich);
 [...]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Seite 1 von 2  1 2      

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