Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 3 Units passend verknüpfen
Airtrox - Fr 18.12.09 19:33
Titel: 3 Units passend verknüpfen
Hallo,
ich habe 3 Units (Unit2 ist die Hauptunit), welche ich passend verknüfen will, wobei ich dachte, dass ich es auch hätte, aber anscheinend unit3 nicht auf unit1 zugreifen kann. In unit1 ist eine Procedur, welche ich in unit3 abrufen will. Aber seht selbst.
Unit2:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| uses unit1, unit3, ...
...
implementation
{$R *.dfm} |
Unit1:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| uses ...
...
implementation
uses unit2, unit3;
{$R *.dfm} |
Unit3:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| unit Unit3;
interface
uses unit1
...
implementation
{$R *.dfm}
uses unit2; |
Eigentlich müssten so doch alle Units aufeinander zugreifen können?
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Fr 18.12.2009 um 23:39
Niko S. - Fr 18.12.09 19:35
Ich glaube, dass ist nicht so wie in C/C++.
Du musst für jede Unit die Units einbinden, da gibts keine art von Kapselung oder Vererbung..
Bin mir aber nicht sicher!
glotzer - Fr 18.12.09 19:39
am einfachsten wäre wohl alles was du in in den beiden units brauchst in nen unit 4 zu packen...
Airtrox - Fr 18.12.09 19:48
an Niko:
Es sind eigentlich alle miteinader verknüpft, entweder stehen die anderen unit oben oder unten in der uses.
Niko S. - Fr 18.12.09 19:56
Oh stimmt, entschuldigung, hab ich irgendwie nicht ganz gerafft.
Vielleicht liegts dann einfach nur an den Bezeichnungen? ^^
Oder die procedure ist in "Private" deklariert? Passiert mir auch manchmal..
Airtrox - Fr 18.12.09 20:42
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| ... private public end;
var Form3: TForm3;
implementation
{$R *.dfm}
uses unit2; |
So siehts bei unit 3 aus.
Niko S. - Fr 18.12.09 20:53
Und die procedure steht im private teil? Oder ist das gar nichts drin?
Weil ich seh da nichts, wo Form1 da zugreifen könnte.
Das wäre dann ja "Form3.Procedure;"..
Airtrox - Fr 18.12.09 21:04
Ich kann dir nicht ganz folgen: Die aufzurufende Prozedur steht in unit1 gleich hinter {$R *.dfm}
Niko S. - Fr 18.12.09 21:43
mach sie doch noch im "public" teil rein
also
Delphi-Quelltext
1: 2: 3:
| Public procedure IrgendeineProcedure(var: Integer); [...] |
Airtrox - Fr 18.12.09 21:59
gebe ich das in der unit an, in der sich die procedur befindet, kommt folgende fehlermeldung:
[Fehler] Unit1.pas(58): Ungenügende Forward- oder External-Deklaration: 'TForm1.meineprocedur'
Die Procedur benötigt keine variabeln, also meineprocedur()
Niko S. - Fr 18.12.09 22:05
Kannst du mal den Code posten O:
Airtrox - Fr 18.12.09 23:15
also den code der unit1 (gekürzt):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ...;
type TForm1 = class(TForm) ... procedure Button1Click(Sender: TObject); private public procedure meinstring(); end;
implementation
uses unit2, unit3;
{$R *.dfm}
procedure meinstring(); begin ... end; |
Niko S. - Fr 18.12.09 23:23
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ...;
type TForm1 = class(TForm) ... procedure Button1Click(Sender: TObject); private public procedure meinstring(); end;
implementation
uses unit2, unit3;
{$R *.dfm}
procedure TForm1.meinstring(); begin ... end; |
Airtrox - Fr 18.12.09 23:41
Vielen Dank! Es klappt :)
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!