Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prozedur aufrufen (https://www.delphipraxis.net/42514-prozedur-aufrufen.html)

hehemande 20. Mär 2005 10:10


Prozedur aufrufen
 
Hallo zusammen,

Nachdem ich es nun dank eurer Hilfe geschafft habe, einen Timer auf einer anderen Form zu aktivieren, möchte ich nun gerne eine Prozedur (CopyFiles) auf einer anderen Form aufrufen.
Ich habe es folgendermaßen versucht:
Delphi-Quellcode:
Form1.CopyFiles;
Das hat aber nicht so richtig geklappt :-(

Vielen Dank für eure Hilfe
Michael

malo 20. Mär 2005 10:12

Re: Prozedur aufrufen
 
Hat nicht geklappt. Sorry, aber ich hab meine Glaskugel vergessen. Gibt es eine Fehlermeldung? Wenn ja, welche?

hehemande 20. Mär 2005 10:13

Re: Prozedur aufrufen
 
Zitat:

Undefinierter Bezeichner:CopyFiles

Nils_13 20. Mär 2005 10:19

Re: Prozedur aufrufen
 
Den Befehl gibt es nicht.

Die Muhkuh 20. Mär 2005 10:22

Re: Prozedur aufrufen
 
Hi,

ich gehe mal von aus, dass das so aussieht:

Delphi-Quellcode:
implementation

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

procedure CopyFiles;
begin
  mach was...
end;
Wenn dann sollte das so aussehen:

Delphi-Quellcode:
TForm1 = class
private
  procedure CopyFiles;
end;
...
...
...

implementation

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

procedure TForm1.CopyFiles;
begin
  machwas
end;
[edit] :wall: Erst lesen, dann schreiben.

Wenn du in Unit2 (Form2) die Procedure CopyFiles aus der Unit1 (Form1) aufrufen willst, muss du das so machen:

Delphi-Quellcode:
// Unit2
uses {blablabla}, Unit1;

// Aufrufen
Form1.CopyFiles;
[/edit]

semo 20. Mär 2005 10:22

Re: Prozedur aufrufen
 
die unit in welcher sich der befehl befindet in "uses" der Unit einbinden wo du den Befehl aufrufen willst

hehemande 20. Mär 2005 10:24

Re: Prozedur aufrufen
 
Hi,

Nein, so sieht es nicht aus, weil in deinem Beispiel Versucht wird, von Form1 aus eine Prozedur auf der gleichen Form aufzurufen.
Ich versuche aber, von Form2 aus auf die Prozedur auf Form1 zuzugreifen.

Danke
Michael

hehemande 20. Mär 2005 10:25

Re: Prozedur aufrufen
 
Zitat:

Zitat von computer-glossar.de
die unit in welcher sich der befehl befindet in "uses" der Unit einbinden wo du den Befehl aufrufen willst

Habe ich gemacht.

Gruß
Michael

Die Muhkuh 20. Mär 2005 10:25

Re: Prozedur aufrufen
 
Zitat:

Zitat von hehemande
Hi,

Nein, so sieht es nicht aus, weil in deinem Beispiel Versucht wird, von Form1 aus eine Prozedur auf der gleichen Form aufzurufen.
Ich versuche aber, von Form2 aus auf die Prozedur auf Form1 zuzugreifen.

Danke
Michael

Jupp, ich hab nicht richtig gelesen. Ich habs grade im Edit im vorherigen Post geschrieben. Einfach dort nochmal gucken :-)

hehemande 20. Mär 2005 10:31

Re: Prozedur aufrufen
 
Hi,

Genau das habe ich bereits getan, aber er sagt weiterhin "Undefinierter bezeichner" :-(

Gruß
Michael

Nils_13 20. Mär 2005 10:32

Re: Prozedur aufrufen
 
hi,

du must die procedure noch eintragen (TForm1):
Delphi-Quellcode:
procedure CopyFiles;

Die Muhkuh 20. Mär 2005 10:33

Re: Prozedur aufrufen
 
Zitat:

Zitat von hehemande
Hi,

Genau das habe ich bereits getan, aber er sagt weiterhin "Undefinierter bezeichner" :-(

Gruß
Michael

Wie hast du die Procedure deklariert in der Unit1.

hehemande 20. Mär 2005 10:35

Re: Prozedur aufrufen
 
Delphi-Quellcode:
procedure CopyFiles();
begin
  //Blabla
end;

Die Muhkuh 20. Mär 2005 10:39

Re: Prozedur aufrufen
 
Aha,

schau dir nochmal meinen ersten Post an. Da steht wie du das deklarieren musst.

semo 20. Mär 2005 10:42

Re: Prozedur aufrufen
 
im private bereich deklariert??? dann kann das nicht gehen. du musst den public bereich nehmen!

hehemande 20. Mär 2005 10:43

Re: Prozedur aufrufen
 
Achso, sorry

Muss
Delphi-Quellcode:
TForm1 = class
private
vor alles, oder nur vor diese Prozedur?

Nils_13 20. Mär 2005 10:47

Re: Prozedur aufrufen
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    // --> Hier muss die procedure rein  <--
  end;

semo 20. Mär 2005 10:48

Re: Prozedur aufrufen
 
Unit 1:
Delphi-Quellcode:
TForm1 = class
  private
  ...
  public
    procedure CopyFiles;
end;


...
procedure TForm1.CopyFiles;
begin
  //machwas
end;

Unit2:
Delphi-Quellcode:
uses Unit1;

....

procedure TForm2.Button1Click(Sender: TObject);
begin
  CopyFiles;
end;

hehemande 20. Mär 2005 10:57

Re: Prozedur aufrufen
 
Jetzt habe ich folgenden Fehler:
Zitat:

[Fehler] Unit1.pas(17): Ungenügende Forward- oder External-Deklaration: 'TForm1.CopyFiles'

Nils_13 20. Mär 2005 11:00

Re: Prozedur aufrufen
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure CopyFiles;
  end;
----------------------------
procedure TForm1.CopyFiles; //<--
begin
// mach was
end;

semo 20. Mär 2005 11:02

Re: Prozedur aufrufen
 
das bedeutet dass du die Prozedur zwar im interface bereich angegeben hast,
aber die procedure nicht im implementation aufführst

edit: Nils_13 hat dir das Beispiel mal erläutert...

hehemande 20. Mär 2005 11:11

Re: Prozedur aufrufen
 
Hmm, genau das habe ich gemacht...

Nils_13 20. Mär 2005 11:12

Re: Prozedur aufrufen
 
Kannst ja dein Programm zur Verfügung stellen ! Dann können wir dein Problem verstehen.

hehemande 20. Mär 2005 11:18

Re: Prozedur aufrufen
 
Ok.

Unit3: (Vorher Unit1 genannt)
Delphi-Quellcode:
//Habe ich entfernt
Unit2:
Delphi-Quellcode:
//Habe ich entfernt
Hoffe, ihr kommt mit meiner Unordnung klar...

Nils_13 20. Mär 2005 11:23

Re: Prozedur aufrufen
 
Und? Wo liegt das Problem ? Es sollte alles laufen.
:shock: du hast ja überall TForm3 vergessen :shock:

hehemande 20. Mär 2005 11:24

Re: Prozedur aufrufen
 
Tut es aber nicht :-(

Nils_13 20. Mär 2005 11:26

Re: Prozedur aufrufen
 
Zitat:

Zitat von Nils_13
:shock: du hast ja überall TForm3 vergessen :shock:

Daran liegt es !

hehemande 20. Mär 2005 11:28

Re: Prozedur aufrufen
 
Hmm, hilf mir mal auf die Sprünge, wo muss den da TForm3 hin?

semo 20. Mär 2005 11:29

Re: Prozedur aufrufen
 
mache mal folgendes:

klicke mit der rechten Maustaste auf die Prozedurnamen im Implememtationsteil der Unit 3.
Dann öffnet sich ein PopupFenster.
Dort klckst du den Punkt "Klasse beim Cursor vervollständigen" an.

Und das für alle Proceduren.

ann wird automatisch im interface teil die Deklaration der Methoden aufgenommen :wink:

Die Muhkuh 20. Mär 2005 11:30

Re: Prozedur aufrufen
 
Hi,

du (hehemande) musst, wie Nils es schon in seinem Beispiel erklärt hat, überall so machen.

Hier nochmal:

Delphi-Quellcode:

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure CopyFiles;
    function GetTempDir: String;
    function GetWinDir: String;
  end;

implementation

function TForm1.GetTempDir: String;
begin
  // mach was
end;

function TForm1.GetWinDir: String;
begin
  // mach was
end;

procedure TForm1.CopyFiles;
begin
  // mach was
end;

...
[edit] Delphi-Tags richtig gesetzt [/edit]

Die Muhkuh 20. Mär 2005 11:32

Re: Prozedur aufrufen
 
*hier stand Mistfug*

Muetze1 20. Mär 2005 11:35

Re: Prozedur aufrufen
 
Moin!

Zitat:

Zitat von Spider
Das geht nur anders rum.

Nein, du liegst falsch. Wie kommst du auf eine solche Behauptung? Das funktioniert in beide Richtungen - vielleicht nicht wenn du eine kleinere Version hast, aber bei meinem Delphi 5 und Delphi 7 Professional klappt es in beide Richtungen. Überhaupt schonmal ausprobiert?

MfG
Muetze1

Nils_13 20. Mär 2005 11:36

Re: Prozedur aufrufen
 
Hört das hier bald mal auf, wir haben doch schon alles gesagt, ob man jetzt Faul ist alles einzutippen oder nicht ist doch egal.

Die Muhkuh 20. Mär 2005 11:37

Re: Prozedur aufrufen
 
Zitat:

Zitat von Muetze1
Moin!

Zitat:

Zitat von Spider
Das geht nur anders rum.

Nein, du liegst falsch. Wie kommst du auf eine solche Behauptung? Das funktioniert in beide Richtungen - vielleicht nicht wenn du eine kleinere Version hast, aber bei meinem Delphi 5 und Delphi 7 Professional klappt es in beide Richtungen. Überhaupt schonmal ausprobiert?

MfG
Muetze1

Hmm,

echt?

Klappt bei mir nicht:

Delphi-Quellcode:
...

implementation

procedure TForm1.MachWas;
begin
  //
end;
Rechte Maustaste und vervollständigen klappt nich.

[edit] Ok, funktioniert doch. Nach nem Neustart von Delphi ging das auch. Wusste ich gar nicht. [/edit]

mirage228 20. Mär 2005 11:38

Re: Prozedur aufrufen
 
Versuchs mal mit [Shift] + [Strg] + [C]

Damit sollte es auf alle Fälle gehen...

mfG
mirage228

hehemande 20. Mär 2005 11:39

Re: Prozedur aufrufen
 
Ich habe es jetzt hinbekommen, DANKE!!

Ps: Das hat nichts mit zu faul zu tun, bin halt ein bischen blöd :lol:

semo 20. Mär 2005 11:41

Re: Prozedur aufrufen
 
nicht "blöd", sondern "aller anfang ist schwer" :wink:

ist doch schön wenn es jetzt klappt.

Nils_13 20. Mär 2005 11:41

Re: Prozedur aufrufen
 
:mrgreen: Dann stell mal später deinen Prog unter Freeware oder OpenSource zu Verfügung, handelt sich ja um ZIP.

hehemande 20. Mär 2005 11:43

Re: Prozedur aufrufen
 
Hi,

Das wird ein Teil von einem Installer, der FREEWARE wird :-D

Gruß
Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr.

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