Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure aufrufen! (https://www.delphipraxis.net/13291-procedure-aufrufen.html)

ims 15. Dez 2003 15:56

Re: procedure aufrufen!
 
ja, hier ist es so... aber das ist längst nicht immer so... am besten gleich angewöhnen.

gruss, ims

Nalincah 15. Dez 2003 15:58

Re: procedure aufrufen!
 
Verdammt. Wo ich angefangen hab meine erste Antwort zu tippen waren da noch keine anderen. Und nach dem abschicken waren schon 5 antworten da..bin echt zu langsam geworden

fredel007 15. Dez 2003 15:59

Re: procedure aufrufen!
 
Vielen Dank,....
jetzt klappts!

schöne tage noch!

Nalincah 15. Dez 2003 16:00

Re: procedure aufrufen!
 
poste nochmal deinen source
haste es mal mit meinem probiert?

Matze 15. Dez 2003 16:01

Re: procedure aufrufen!
 
@General2003:
Tyrael Y. war noch langsamer :mrgreen:
Du hast aber eine sehr gute Erläuterung dazugegeben. :thumb:

Matze 15. Dez 2003 16:03

Re: procedure aufrufen!
 
Hier mal ein beispiel, bei mir geht das:
Delphi-Quellcode:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Farbe(Sender);
end;

procedure TForm1.Farbe(Sender: TObject);
begin
  Color:=clNavy;
end;

end.

Nalincah 15. Dez 2003 16:06

Re: procedure aufrufen!
 
Zitat:

Zitat von Matze
@General2003:
Tyrael Y. war noch langsamer :mrgreen:
Du hast aber eine sehr gute Erläuterung dazugegeben. :thumb:

Mich würd mal interessieren ob das alles richtig war was ich geschrieben hab (Hab grad den Punkt 1 nochmal editiert)

Matze 15. Dez 2003 16:10

Re: procedure aufrufen!
 
Zitat:

Zitat von General2003
1. Die Function/Procedure unter private oder public packen (Muss dann mit TForm1.Aufruf aufgerufen werden) (Sie "gehört" dann praktisch zu der Form1. So kannst du die Proceduren auch aus anderen Units aufrufen.
oder unter private public packen dann wird sie ohne "TForm1." aufgerufen.

also, wenn es so deklariert ist:
Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure Zeichne;
oder so:
Delphi-Quellcode:
public
    { Public-Deklarationen }
    procedure Zeichne;
und die Procedure so aussieht:
Delphi-Quellcode:
procedure Zeichne;
begin

end;
dann erfolgt der Aufruf mit:
Delphi-Quellcode:
TForm1.Zeichne;
sieht die Procedure jedoch so aus:
Delphi-Quellcode:
procedure TForm1.Zeichne;
begin

end;
dann erfolgt der Aufruf mit:
Delphi-Quellcode:
Zeichne;
Äh, kappiert? :mrgreen:

[Edit]Falls du das so gemeint hast, dann stimmt's ;) Der Rest müsste auch stimmen![/Edit]

Christian Seehase 15. Dez 2003 16:14

Re: procedure aufrufen!
 
Moin Sebastian,

Zitat:

Zitat von General2003
1. Die Function/Procedure unter private oder public packen (Muss dann mit TForm1.Aufruf aufgerufen werden) (Sie "gehört" dann praktisch zu der Form1. So kannst du die Proceduren auch aus anderen Units aufrufen.
oder unter private public packen dann wird sie ohne "TForm1." aufgerufen.

Die Stelle an der die Deklaration stand war schon richtig, obwohl natürlich auch eine andere Stelle möglich gewesen wäre.
Aus anderen Units heraus aufgerufen werden kann sie aber nicht, wenn sie unter private steht. Das geht nur innerhalb der Unit in der sie deklariert wurde.
Die Angabe von TForm ist, unabhängig davon, wo die Deklaration steht, bei der Implementierung immer erforderlich, und die Angabe von Form1 immer ausserhalb der Methoden.

Nalincah 15. Dez 2003 16:15

Re: procedure aufrufen!
 
Wenn ich das so mache:

Delphi-Quellcode:
  public
    { Public declarations }
    procedure Aufruf;
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TForm1.Aufruf;
end;

procedure Aufruf;
begin
  ShowMessage('Klappt');
end;
Dann sagt der

Delphi-Quellcode:
[Fehler] Unit1.pas(33): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt
[Fehler] Unit1.pas(20): Ungenügende Forward- oder External-Deklaration: 'TForm1.Aufruf'
Habs bis jetzt auch noch nie so gemacht. nur andersrum
Delphi-Quellcode:
procedure TForm1.Aufruf;
begin
  // Source
end;
und aufruf mit
Delphi-Quellcode:
begin
  Aufruf;
end;
Ist das ein Fehler von dir oder von mir? Wenn von mir: Wo liegt der Fehler und der Unterschied zwischen den beiden Möglichkeiten?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz