Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vereinfachung von Procedurenaufrufe (https://www.delphipraxis.net/57323-vereinfachung-von-procedurenaufrufe.html)

SirThornberry 30. Nov 2005 19:34

Re: Vereinfachung von Procedurenaufrufe
 
Das ganze geht zu vereinfachen. Dazu MUSS ki_status_0 bis ki_status_K jedoch im Published definiert sein (also nicht im Private, public oder protected).
Anschließend geht folgendes:
Delphi-Quellcode:
type
  TObjProc = procedure of Object;
var LMethod: TObjProc;
begin
  @LMethod := MethodAddress('ki_status_' + ki_status[1]);
  if Assigned(LMethod) then
    LMethod;

Premutos 30. Nov 2005 19:37

Re: Vereinfachung von Procedurenaufrufe
 
Zitat:

Zitat von Khabarakh
Meinst du Chimairas Version? Dort musst du nur den Prozedurenzeigertyp ändern:
Delphi-Quellcode:
[...] of procedure(sqw: string);

ja soweit war ich :)
aber was ich meinte ist das ich mehrere proceduren hab mit verschiedenen parametern

zb.

procedure dweji(jij:integer);
procedure dwedw;
procedure hdueh(jijws.pchar; plop:boolean; suhu:string);
procedure ddwdwe(jijided:string):string;

wie funktioniert das dann?

Khabarakh 30. Nov 2005 19:50

Re: Vereinfachung von Procedurenaufrufe
 
Wie willst du dann die Parameter übergeben?
Delphi-Quellcode:
Methods[i](myString, myInt);
oder Ähnliches kann ja dann nicht mehr funktionieren. Aber auch wenn du die Parameter z.B. in einem dynamischen Array hälst, ist der Prozeduraufruf mit Delphi AFAIK nicht möglich. Unter .NET mit Reflection wäre dies allerdings ein Leichtes :wink: .

Premutos 30. Nov 2005 19:55

Re: Vereinfachung von Procedurenaufrufe
 
Zitat:

Zitat von Khabarakh
Wie willst du dann die Parameter übergeben?
Delphi-Quellcode:
Methods[i](myString, myInt);
oder Ähnliches kann ja dann nicht mehr funktionieren. Aber auch wenn du die Parameter z.B. in einem dynamischen Array hälst, ist der Prozeduraufruf mit Delphi AFAIK nicht möglich. Unter .NET mit Reflection wäre dies allerdings ein Leichtes :wink: .


hmm .net geht in meine fall leider nicht, sonst gibt es keine möglichkeit ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Seite 2 von 2     12   

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