AGB  ·  Datenschutz  ·  Impressum  







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

Suchen einer Methode

Ein Thema von Christian18 · begonnen am 25. Feb 2008 · letzter Beitrag vom 11. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Suchen einer Methode

  Alt 25. Feb 2008, 18:26
Hallo,

ist es möglich eine Methode zu finden? Ich habe den Namen der Methode aus einer Datei. Und diese Methode möchte ich einen Button zuweisen.

Name aus Datei: ShowFiles

Methode: procedure TPrgFiles.ShowFiles(Sender: TObject);

MFG Christian18
  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
 
#2

Re: Suchen einer Methode

  Alt 25. Feb 2008, 18:29
Hi,

Das dürfte so funktionieren:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Sieben(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x: TMethod;
begin
  x.Data := Button1; // Der zukünftige Besitzer der Methode
  x.Code := TForm1.MethodAddress('Sieben'); // Pointer zur Methode selbst
  Button1.OnClick := TNotifyEvent(x);
end;

procedure TForm1.Sieben(Sender: TObject);
begin
  ShowMessage('Sieben!');
end;

end.
EDIT: Alles neu gemacht

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
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Suchen einer Methode

  Alt 10. Apr 2008, 18:41
Hallo,

kann man irgendwie auch die Methode direkt aufrufen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x: TMethod;
begin
  x.Data := Button1; // Der zukünftige Besitzer der Methode
  x.Code := TForm1.MethodAddress('Sieben'); // Pointer zur Methode selbst

  TNotifyEvent(x); // gefundene Methode direkt hier ausführen ???? geht das?!?!? (so funktioniert es leider nicht)
end;
MFG Christian18
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#4

Re: Suchen einer Methode

  Alt 10. Apr 2008, 19:11
Hallo,

ich habe es gerade selber herrausgefunden.

Ich habe es so gemacht:

Delphi-Quellcode:
procedure TForm1.Neu(Sender: TObject); // Diese Methode soll gefunden werden.
begin
  ShowMessage('Neu');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TProcedure(Form1.MethodAddress('Neu')); // Methode finden und ausführen
end;
MFG Christian18
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Suchen einer Methode

  Alt 10. Apr 2008, 19:30
Böse! So kannst du in der Methode weder auf Sender noch auf Self und damit auch nicht auf Felder der Instanz zugreifen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#6

Re: Suchen einer Methode

  Alt 10. Apr 2008, 20:32
Hallo,

wie kann man es denn besser machen?

MFG Christian18
  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: Suchen einer Methode

  Alt 10. Apr 2008, 20:41
Hi,

versuchs mal so:

Delphi-Quellcode:
TDeineMethode = procedure (lala: Integer) of object;

var x: TMethod;
    y: TDeineMethode;
begin
  x.Data := Button1;
  x.Code := TForm1.MethodAddress('Sieben');
  y := TDeineMethode(x);
  y(5);
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
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#8

Re: Suchen einer Methode

  Alt 10. Apr 2008, 20:43
Ok, danke funktioniert.
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#9

Re: Suchen einer Methode

  Alt 10. Apr 2008, 20:57
Ich bins nochmal.

Meinst du so?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit3, Unit2;

type
  TMeine = procedure (Sender: TObject) of object;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Frame21: TFrame2;
    Frame31: TFrame3;
    procedure Button1Click(Sender: TObject);
    procedure Sieben(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Sieben(Sender: TObject);
begin
  Frame21.Visible:=False;
  Frame31.Visible:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
  var x: TMethod;
      y: TMeine;
begin
  x.Data:=Button1;
  x.Code:=TForm1.MethodAddress('Sieben');
  y:=TMeine(x);

  y(Sender);
end;

end.
So funktioniert es doch nicht so wirklich.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Suchen einer Methode

  Alt 11. Apr 2008, 08:02
x.Data=TForm1 wel es ja procedure TForm1.Sieben heißt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 10:03 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