Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#27

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 02:37
Ich denke ich komme der Sache näher

Hatte gerad auch noch eine kleine Idee dazu, die aber (in meiner Version) voraussetzt, dass Parameterliste und evtl. Rückgabetyp der einzuerbenden Methoden alle gleich sind. Vielleicht lässt sich das ja auch noch umbasteln... Ist grad zu spät um da noch qualifiziert weiter zu denken

Hier mal was mir grad in den Sinn kam:
Delphi-Quellcode:
type
  TCFunc = function(a, b: Integer): Integer of object;

  TMethodClass = class
  public
    class function Add(a, b: Integer): Integer;
    class function Sub(a, b: Integer): Integer;
  end;

  TMyClass = class
  private
    FMethods: TMethodClass;
    function GetMethod(s: String): TCFunc;
  public
    property Method[s: String]: TCFunc read GetMethod; default;
  end;

implementation

{ TMethodClass }

class function TMethodClass.Add(a, b: Integer): Integer;
begin
  result := a+b;
end;

class function TMethodClass.Sub(a, b: Integer): Integer;
begin
  result := a-b;
end;

{ TMyClass }

function TMyClass.GetMethod(s: String): TCFunc;
begin
  if s = 'Addthen result := FMethods.Add
  else
  if s = 'Subthen result := FMethods.Sub;
end;

// Anwendung

procedure TuWas;
var
  tmp: TMyClass;
  x: Integer;
begin
  tmp := TMyClass.Create;
  x := tmp.Method['Add'](2, 3);
  x := tmp.Method['Sub'](x, 5);
  // Leider klappt, trotz default-tag folgendes nicht:
  x := tmp['Add'](2, 3);
  x := tmp['Sub'](x, 5);
  // Der Compiler meckert, aber ich kann nicht nachvollziehen warum :\
  tmp.Free;
end;

end.
Naja, wollts nur nicht vorenthalten haben - evtl. lohnt es sich ja doch da weiter zu denken.


Gudde Nacht,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat