Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einem record eine procedure zuweisen? (https://www.delphipraxis.net/63174-einem-record-eine-procedure-zuweisen.html)

Tau 14. Feb 2006 22:07


Einem record eine procedure zuweisen?
 
Hallo Leute

hoffe ich habe die richtige Rubrik gewählt: -D

Ich habe einen Record dem ich eine Procedur zuweisen will.
Und auch die Procedure wieder ausführen lasen will.

Delphi-Quellcode:
 TMyRec = record
    NoEvent: Boolean;
    MyProce: ???????;
   end;
Procedure:
Delphi-Quellcode:
procedure DBSort(DataSet: TADOQuery);
begin
...
end;
jetzt meine Frage
1) wie muss ich die Deklaration vom Record machen.
2) und wie kann ich die Procedur wieder aufrufen?

hat jemand einen Tipp. :gruebel:

Tau
:hi:

arbu man 14. Feb 2006 22:09

Re: Einem record eine procedure zuweisen?
 
mit eine record geht es glaub ich nicht nim lieber ein TObject

Christian Seehase 14. Feb 2006 22:16

Re: Einem record eine procedure zuweisen?
 
Moin Tau,

hier mal ein kleines Beispiel:

Delphi-Quellcode:
type
  TMyProc = procedure(parameter : integer);

  TMyRecord = record
    proc : TMyProc;
  end;

procedure PrintInt(AiValue : integer);
begin
  ShowMessage(IntToStr(AiValue));
end;

procedure TForm1.FormCreate(Sender: TObject);

var
  mr : TMyRecord;

begin
  mr.proc := PrintInt;
  mr.proc(1);
end;

Luckie 14. Feb 2006 22:22

Re: Einem record eine procedure zuweisen?
 
Aber wären dazu nicht Klassen besser geeignet? :gruebel:

Tau 14. Feb 2006 22:48

Re: Einem record eine procedure zuweisen?
 
Hallo Leute

@arbu man
danke für den Tipp, aber hättest du dafür ein Beispiel?


@Christian Seehase
schaut ganz gut aus das ganze hat leider nur einen kleinen Haken.
wenn ich dir procedure unter public deklariere bekomme ich leider einen Fehler
(Inkompatible Typen: Reguläre Procedure und Methodenzeiger).
ansonsten schaut die Sache ziemlich gut aus.

@Luckie
hättest du auch vielleicht ein Beispiel?

ich lerne gerne immer was dazu.

Ich finde dieses Forum einfach nur super.

Tau
:hi:

JasonDX 14. Feb 2006 23:00

Re: Einem record eine procedure zuweisen?
 
Zitat:

Zitat von Tau
schaut ganz gut aus das ganze hat leider nur einen kleinen Haken.
wenn ich dir procedure unter public deklariere bekomme ich leider einen Fehler
(Inkompatible Typen: Reguläre Procedure und Methodenzeiger).
ansonsten schaut die Sache ziemlich gut aus.

Das liegt wahrscheinlich daran, dass Prozedur <> Methode ist. Die Methode hat noch einen zusätzlichen, versteckten Parameter, nämlich den Instanz-Zeiger. Damit du eine Methode zuweisen kannst, einfach nur den Typen um ein kleines Stichwort erweitern:
Delphi-Quellcode:
TMyMethod = procedure(parameter : integer) of object;
Zu OOP, also dem, was dir Luckie vorgeschlagen hat (und arbu man wahrscheinlich auch gemeint hat), gibt es massenweise Tutorials, die dir gut weiterhelfen werden. In der DP dürften welche rumliegen, im DSDT dürften afair auch welche schlummern, und spätestens Tante Google wird dir da gut weiterhelfen :zwinker:

greetz
Mike

Tau 14. Feb 2006 23:07

Re: Einem record eine procedure zuweisen?
 
@JasonDX

besten Danke für die schnelle Hilfe. :thumb:

Bast sitzt woklt und hot Luft

Tau
:hi:

Luckie 15. Feb 2006 06:43

Re: Einem record eine procedure zuweisen?
 
Zitat:

Zitat von Tau
@Luckie
hättest du auch vielleicht ein Beispiel?

Klar: http://www.michael-puff.de/dirindex....phi/Tutorials/

Ich meine genau das macht doch eine Klasse aus, dass sie auch Methoden mitbringt, mit denen man die Daten der Klasse manipulieren kann.

DP-Maintenance 15. Feb 2006 07:07

DP-Maintenance
 
Dieses Thema wurde von "MrSpock" von "VCL / WinForms / Controls" nach "Object-Pascal / Delphi-Language" verschoben.
Ist eher eine Sprachenfähigkeitsfrage.

Tau 15. Feb 2006 18:40

Re: Einem record eine procedure zuweisen?
 
Hallo Luckie

Danke für den Link. Werde mir die Tutorials gleich einmal zu gemühte führen.
Ist wieder mal Nahrung für die Grauen Zellen. Man verkalkt jahr viell zu schnell.


Tau
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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