Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prozeduren "auslagern"
Default112 - Fr 30.04.04 01:35
Titel: Prozeduren "auslagern"
Also, ich schreibe grad an nem IRC-Bot, da tut sich jetz ein Problem auf: Das Programm wird unübersichtlich.
Ich möchte einige Prozeduren in einer anderen Datei ansiedeln, so dass ich aber so auf sie zugreifen kann, als wären sie einfach an mein Programm drangehängt. Habe ein wenig mit einer zweiten Unit gespielt, aber ich komme nicht zum gewünschten Ergebnis. Ich habe jetzt eine Prozedur, die simples StrinReplace macht. Das sind einige Zeilen, die einfach nur unübersichtlichkeit hervorrufen. Lager ich diese Prozedur in eine zweite Unit aus kann ich zwar von Unit1 darauf zugreifen, Prozeduren aus Unit2 können aber nicht Prozeduren in Unit1 aufrufen. Es muss irgendwie gehen, ich weiss bloss nicht wie :)
Gruß
Default
Delete - Fr 30.04.04 01:43
Du musst die Unit1 auch in der zweiten Unit aufnehmen. Und dann musst du die Funktionen aus Unit eins noch im Interface Abschnitt oder im public Abschnitt der Klasse "veröffentlichen".
bms - Fr 30.04.04 03:10
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| unit Unit1;
interface
...
implementation
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject); begin Form2.Caption := 'Hallo von 1'; Form2.Show; end;
end. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| unit Unit2;
interface
...
implementation
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject); begin Form1.Caption := 'Hallo von 2'; end;
end. |
Default112 - Fr 30.04.04 11:23
Dann bekomm ich nen Fehler: 'Überkreuzender Bezug zweier Units auf Unit1' und 'Überkreuzender Bezug zweier Units auf Unit2'
JoelH - Fr 30.04.04 11:30
Titel: hmm,
Die 'ausgelager' Units schreib ich in die USES Klauses des Interface Teils
Die Main Form schreib ich in den 'ausgelagr' Units in den IMplementation Teil , dadurch vermeidest du das uberkreuzen des Bezugs.
bms - Fr 30.04.04 12:18
Klappt schon. Ich hab es gereade getestet.
Default112 - Fr 30.04.04 14:25
Ihr habt mich anscheinend nicht verstanden. Das Beispiel funktioniert. Aber: Ich habe eine Prozedur "Senden" und eine "haxor" (jaja ^^ 24faches Stringreplace). Die Prozedur "haxor" soll ausgelagert werden, ich muss also von Unit1 aus, Prozedur "haxor" in Unit2 aufrufen und von Unit2 aus die Prozedur "Senden" in Unit1. Das bekomme ich nicht hin.
Default112 - Fr 30.04.04 14:33
Erledigt. Dumm wenn man den Unterschied zwischen Form1 und TForm1 nicht kennt -_-
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!