Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Procedure "public-en" ...
KeinePanik - Fr 03.01.03 19:08
Titel: Procedure "public-en" ...
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| [...] var {meine Variablen}
procedure sowieso;
implementation [...]
procedure sowieso; begin showmessage('irgendwas'); end; |
solang ich die Prozedur dort lasse wo sie ist, ist alles OK ... Nun will ich diese Prozedur aber auch von einer anderen Form aufrufen z.B. von Form3 ... wenn ich die Prozedur jetzt von Form3 so aufrufe
wird sie nicht gefunden ...
Setze ich die Deklaration der Prozedur jetzt in den "Public-Bereich" funktioniert das ganze auch nicht ...
Wie deklariere ich die Prozedur nun so, dass ich sie auch von anderen "Forms" aufrufen kann ?? ...
DaFox - Fr 03.01.03 19:32
Hi!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| [...] public procedure sowieso; [...]
implementation [...]
procedure Form1.sowieso; begin showmessage('irgendwas'); end; |
Gruß,
Markus
AndyB - Fr 03.01.03 20:05
Ich glaube nicht, dass
KeinePanik eine Klasse einsetzen will.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| unit MyUnit; interface uses Dialogs; { Hier die Deklarationen der global verfügbaren Variablen, Konstaten, Typen, Klassen und Funktionen. Bei Funktionen aber nur der Funktionskopf. In diesem Bereich wird die Schnittstelle (=Interface) bereitgestellt. }
procedure MyFunc(const s: String);
implementation
{ Hier werden die für diese Unit "privaten" Variablen, Konstanten, Typen, Klassen deklariert. Die Funktionen und Prozeduren werden hier "ausprogrammiert" (=implementiert => implementation) }
procedure MyFunc(const s: String); begin ShowMessage(s); end;
end. |
DaFox - Fr 03.01.03 20:19
AndyB hat folgendes geschrieben: |
Ich glaube nicht, dass KeinePanik eine Klasse einsetzen will. |
Prima, dann ist die Antwort noch kürzer! :D
"Unit1" siehe Dein Code, KeinePanik.
"Unit2":
Gruß,
Markus
KeinePanik - Sa 04.01.03 00:41
@dafox:
Genauso hab ich es ausprobiert ... rufe ich jetzt aber die Prozedur von z.B. Form3 auf, ist sie unbekannt bzw. "nicht genügend Forward - bzw. external-Deklaration ... ...
@andy:
Ich will keine Klasse einsetzen, sondern einfach meine Prozedur, die in Form1 deklariert ist und auch der "quelltext" der Prozedur steht, von einem anderen Formular (Form3) aufrufen ... das "showmessage" ist nur ein einfaches Beispiel, um zur Laufzeit zu erkennen, dass die Prozedur tatsächlich aufgerufen wird ... in der eigentlichen Prozedur steht was anderes ... ausserdem verlangt die prozedur keine Parameter ...
nochmal @dafox :
Mit den USes hab ich schon beachtet ... also bei form3 steht in den Uses auch die Form1 ... also daran liegt es auch nicht ...
AndyB - Sa 04.01.03 01:51
KeinePanik hat folgendes geschrieben: |
@andy:
Ich will keine Klasse einsetzen |
Und was habe ich geschrieben?
AndyB hat folgendes geschrieben: |
Ich glaube nicht, dass KeinePanik eine Klasse einsetzen will. |
KeinePanik - Sa 04.01.03 02:56
@andy:
Sorry .... überlesen ... entschuldigung ,....
Aber dein Code bringt auch mnicht wirklich weiter, da ich ihn (in abgewandelter Form) so schon gepostet habe und er eben so nicht funktioniert ....
Tino - So 05.01.03 00:49
KeinePanik hat folgendes geschrieben: |
Ich will keine Klasse einsetzen, sondern einfach meine Prozedur, die in Form1 deklariert ist |
Ist die Procedure nun in einer Klasse deklariert oder nicht? Wenn Du diese in tForm1 deklariert ist ist die Procedure Bestandteil der Klasse tForm1 und muss dann so implementiert werden:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Type tForm1 = {...} public procedure test; end;
{...}
procedure tForm1.test; begin end; |
Aufgerufen wird die Procedure dann zum Beispiel so:
Gruß
TINO
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!