AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure Problem

Ein Thema von Neutral General · begonnen am 4. Aug 2006 · letzter Beitrag vom 4. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Procedure Problem

  Alt 4. Aug 2006, 19:56
Hi,

Ich hätte da ein Probleeem. Also ich habe eine Variable A

var A: TProcedure; und angenommen

A = procedure Test(Abc: Integer); Ich habe dann eine Klasse die soll dann eine Procedure enthalten die so aussieht wie die aus A. Versteht ihr was ich meine ?
Wie mach ich das ?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Procedure Problem

  Alt 4. Aug 2006, 20:01
öhm.... so?

Delphi-Quellcode:
type
  TMyProc = procedure(param: Integer) of object;

  TMyClass = class
    procedure SomeProc(param: Integer);
  end;

var
  Proc: TMyProc;

Proc := TMyClass(nil).SomeProc; //das funzt jetzt natürlich nicht^^
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Procedure Problem

  Alt 4. Aug 2006, 20:08
Naja ich erklärs nochmal anders:

Delphi-Quellcode:
type
 TKlasse = class(Egal)
  private
   A: TProcedure;
  public
   constructor Create(...); override;
   procedure A; // Da soll dann die Procedure stehn die im Konstruktor zugewisen wurde...
 end;


constructor Create(...);
begin
 inherited Create(...);
 A:= *Irgendwas* // Aber oft verschieden
 ...
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Procedure Problem

  Alt 4. Aug 2006, 20:15
Na an sich war doch der Ansatz von DGL-Luke gar nicht so falsch.
Delphi-Quellcode:
type
  TMyProc = procedure(int : Integer) of object;

  TMyProcInvoker = class(TObject)
    public
      procedure doFoo(int : Integer);
  end;

  TMyClass = class(TObject)
    public
      mp : TMyProc;
  end;

implementation

procedure TMyClass.FormCreate(Sender: TObject);
var buffer : TMyProcInvoker;
begin
  buffer := TMyProcInvoker.Create;
  self.mp := buffer.doFoo;
end;
[edit]
ein end vergessen!
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Procedure Problem

  Alt 4. Aug 2006, 20:18
Also das Problem das die Procedure ja mal so aussehn kann:

procedure Ka1(Bla: Integer); und ein anderes mal

procedure Hallo(S: String; Abc5: Pointer); und dann will ich:

Delphi-Quellcode:
var Test: TMyClass;

procedure TForm1.OnCreate(Sender: TObject);
begin
 Test := TMyClass.Create;
 Test.Procedure(50); // wenn Procedure = Ka1 ist
 Test.Procedure('Test',@Form1); // wenn Procedure = Hallo ist
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Procedure Problem

  Alt 4. Aug 2006, 20:27
NEIN, das geht auf gar keinen fall.

Allerdings gibt es dafür overload...


Nuja...

Delphi-Quellcode:
type
  TZweigProc = procedure of object;

  TMyAbZweig = class
    public
      SprungInsUngewisse: TZweigProc;
      contructor Create;
    private
      procedure A;
      procedure B;
      procedure C;
    end;

implementation

procedure TMyAbZweig.Create;
begin
  if RandSeed = 0 then Randomize;

  case Random(3) of
    0: SprungInsUngewisse := A;
    1: SprungInsUngewisse := B;
    2: SprungInsUngewisse := C;
  end;
end;

procedure TMyAbzweig.A;
begin
  ShowMessage('A');
end;

procedure TMyAbzweig.B;
begin
  ShowMessage('B');
end;

procedure TMyAbzweig.B;
begin
  ShowMessage('B');
end;
Un jetzt bitte sehr erzeugen und SprungInsUngewisse aufrufen:

Delphi-Quellcode:
with TMyAbZweig.Create do
  SprungInsUngewisse;
Kannst du damit was anfangen?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Procedure Problem

  Alt 4. Aug 2006, 20:30
nein leider nicht weil meine Proceduren immer Parameter haben und sie auch im Quelltext wenn man z.B in deinem Beispiel Sprunginsungewisse aufruft erkennen muss welche es ist und auch entsprechend Parameter angeben können soll.. aber das geht glaub ich schon von der Logik her nicht.. der Compiler kann ja nicht vorher wissen was nachher zugewiesen wird...naja eventuell schon bei mir aber so schlau ist der leider nicht -.-^^
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Procedure Problem

  Alt 4. Aug 2006, 20:37
ähm...

Delphi-Quellcode:
procedure a(s: string); overload;
procedure a(s: string; x: Integer); overload;
procedure a(x: Integer; p: Pointer); overload;
a('blubb',4); //jetzt wird die zweite funktion aufgerufen Das ist so ungefähr die Funktionsweise von overload.

Zitat:
nein leider nicht weil meine Proceduren immer Parameter haben
Delphi-Quellcode:
type
  TIntToBool = function(param: Integer): Boolean;
So besser?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Procedure Problem

  Alt 4. Aug 2006, 20:40
ne

Ich versuche ja gerade Overload zu vermeiden.. Wenn ich overload benutze ist mein ganzes vorhaben schwachsinnig
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Procedure Problem

  Alt 4. Aug 2006, 20:41


Dann erklär uns halt dein Vorhaben...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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